⑴ c语言题目:
如下:
#include <stdio.h>
void main( )
{
int i,j;
for(i=0;i<4;i++)
{
//开头空格偏移
for(j=3;j>i;j--)
{
printf(" ");
}
//输出7个*
for(j=0;j<7;j++)
{
printf("%c",'*');
}
//换行
printf(" ");
}
}
如图:
⑵ 一个C语言题
k=(n=b>a)||(m=a<b)
子表达式n=b>a结果为真
对于逻辑或运算,左侧表达式为真,整个逻辑或表达式结果就为真,所以没有计算右侧的表达式m=a<b,所以m还是原值0
⑶ C语言题库
谭浩强的C语言的那么教程的相配套的习题集就足够满足你的要求了
⑷ C语言题目!!
D是错的,图片中的下面也有文字说明。下面看看我的详细解释:
A选项:
char *ch; ch="abc"; //ch是个指针,"abc"是一个字符串常量,常量是在内存中开辟的一个空间保存的,这个空间是只读的。语句中把ch指针指向这个常量的赋值是完全正确的。下面一段代码演示"abc"是只读常量:
void main()
{
char *ch; ch="abc";
*ch='d'; //程序可以编译链接通过,但是运行到这里程序会非法操作,出现系统提示,内存只能读
}
B选项:
char ch[]={'a','b','c'}; //这样赋值也没错,程序也能编译通过,但是你只能把ch当一个字符数组使用,而不能把它当字符串来使用,因为字符串必须用0结尾,你硬是要把它当字符串用,行,但是会出现很多不可意料的事情,比如printf(ch);屏幕上就可能出现:abc后面一堆其它的东西。这个选项错,是因为题目是问“能给字符串正确赋值”的语句,准确说这是给字符数组赋值而非字符串赋值。
C选项:
char ch[3]="abc";//这是字符串赋值语句,在B中也说了,字符串必须0结尾,但是空间只有3,放入了abc再放不下0了,空间不够,编译就不会通过,所以错了,char ch[4]="abc";就没问题。
D选项:
char ch[4];ch="abc";//ch空间够了,但是这是2条语句,char ch[4];已经开辟了空间,ch指向这个大小为4的空间,ch可以理解为一个指针,这个指针和这个4字节的空间捆绑在一起的,对应关系。ch="abc";同A要把这个指针重新指到另外一个字符串常量,那原先4字节空间就无主了,这编译怎么能让你通过。这是比较通俗的解释。正规的解释是:ch[4]是一个字符数组,字符串常量是不可以这样直接赋值给字符数组。除非是char ch[4]; strcpy(ch,"abc");这样拷贝过去才没问题。
解释不好,有问题可追问,谢谢采纳
⑸ c语言习题
27
A+'6'-'3' 而不是A+6-3,当然这不是重点,注意一下就好
而题目的意思是A的ascII码+6的ASCii码-3的ASCii码,
答案是 'D' 而D的ASCII码就是68
出题人的意思大概是D选项没写单引号,我认为出这题的人脑子不合适,不做深究。
28
考的是运算符的优先顺序,和运算符的结合问题,这种问题是最没意思的
(重复一下出题人脑子有泡)
那么看运算优先级,自加减优先级高于赋值运算符,高于逗号运算符
表面上貌似是先做++,-- 在做赋值,最后做等号,哈答案是9
这是典型没考虑运算符结合问题,
先说赋值和,逗号这两个运算符,没有任何问题,是同样的二元运算符,会严格遵循向右结合,所以优先级生效了
再看麻烦的++和--,同样的向右结合,但是++ -- 写在数字后面的时候貌似向右没有操作数了
那么向左结合就会被翻译成 x,x++,a = x++ 就是 a = x ,x++;
把这个原理用在这道题上,先算sum = num ;
此时sum= num = 7
然后num++; num = 8;
再看下一个二元运算符,
sum++ sum = 8;
num++ num= 9;
此时sum 的值是8
扩展一下 C还有个三元运算符 ?:这个运算符一般没人会考,你把它当成两个连续向右结合的二元运算符就好了。这种题也就考试有用。
29题
考的是与运算符的一个小知识
与要为真的基本条件是1&1 = 1
0 & n = 0
如果计算第一个表达式为0
那么n表达式是不会计算的,跳过了
所以m的值没有变是2
30题
考的是运算精度问题
int * int = int
int / int = int
int *float = float
看出来了吧,向位数更高的靠拢
(int)2/(int)4 = 0 而不等于0.5
后面那个表达式*/%为同级运算符
为了使算式不出现/0或者%0异常都是从左向右结合运算的
先算括号里的(x+y) = 7.3然后存储结果时发现有强转,即7,a%3 = 1
1*7 = 7
7%2 = 1
1/4 = 0
2.5+0 = 2.5
⑹ c语言试题
就做最后一题,其他的自己做吧……
编写函数fun求1000以内所有8的倍数之和。
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
int fun(void){
int i,sum;
for(sum=0,i=8;i<1001;sum+=i,i+=8);
return sum;
}
void main(void){
printf("The result is %d\n",fun());
}
⑺ C语言题目
楼主没有搞清楚变量的作用域,main()函数中的a,b,c 与 fun()函数中的a,b,c 完全没有关系,它们都是局部变量,main()函数中没有修改自己的a,b,c,所以最后结果就是初始值。
⑻ c语言题目
你是说sizeof(a)会等于6吗?因为数组a并没有标明多大,所以在初始化用了多少他的空间就是多大,就相当于一个指针指向一块内存空间而已,可以跟b一样,b你懂了,a也就一样
⑼ C语言题目
char string[32];
int i;
/* 计算长度 */
itoa(abs(in), string, 16);
number=strlen(string);
/* 求和 */
sum=0;
for( i= 0, i< number; i++ )
sum += atoi( string[i]) ;