当前位置:首页 » 编程语言 » c语言题
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言题

发布时间: 2022-02-09 01:02:13

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]) ;