① 几道c语言问题!!!
1.A
if (a=0)-->不成立. 因为a=0是赋值,相当于if(0)
if(a>0)-->不成立;所以执行y+=y
-->结果:y=20
***********************************************
2.有两个选择
D:有语法错误,因为while(!x)后缺分号.
若不是上面情况则选B.原因是:
x=-1*x--->x=-1
!x-->!(-1)-->!(true)-->false
结果:退出循环.仅循环一次.
***********************************************
3.A
该题关键是判断语句"i=10&&x>0".
i=10&&x>0-->i=(10&&x>0)-->i=(true && ture)-->i=true-->true
因此永远循环.
***********************************************
4.C
第1次:i=0-->判断成立(0<3)-->i=1(i++<3,指先比较i<3,再i加1)
第2次:判断成立(1<3)-->i=2
第3次:判断成立(2<3)-->i=3
第4次:判断不成立(3<3)-->i=4
退出
结果:i=4
***********************************************
5.没有合适答案.
执行后,y=1.原因如下:
第1次:y=1-->判断成立(1<=50)
-->if(x>=0)-->条件成立-->break-->退出循环(并不进行y++操作)
结果:y=1
***********************************************
6.C
a(a(i))-->a(a(10))-->a(9)-->6
数组第1个元素为a(0)=1,a(1)=4,...
***********************************************
7.D
i-->1字节
c-->2字节
a-->4字节
1+2+4=7
结果:字节总数为7字节.
***********************************************
8.B
应该:stu是用户定义的结构类型,而不是struc stu.
***********************************************
9.C
C语言中规定不能进行指针"加"操作.
***********************************************
10.D
第1次循环:
s指向"ABCD"中"A"位置,p指向"ABCD"中"B"位置.
printf输出"B"开始的字符串.
第2次循环:
p加1-->指向"ABCD"中"C"位置,判断成立(s指向"A"位置).
printf输出"C"开始的字符串.
第3次循环:
p加1-->指向"ABCD"中"D"位置,判断成立.
printf输出"D"开始的字符串.
第4次循环:
p加1-->指向"ABCD"中"D"后面,与s相关4个地址位,条件不成立.
退出.
输出结果:
BCD
CD
D
② c语言简单题目求助!
#include <stdio.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
printf("%s ",n%7?"no":"yes");
}
return 0;
}
③ C语言中的一些脑残问题求解
其实就是a++和++a的区别嘛,很好理解啊。++a,实在语句之前执行,a++,是在语句完成后执行。
d=(b- - )+(++a)-a;
拆分一下这个语句,剩下的自己拆分(比较典型)
a=a+1;
d=b+a-a;
b=b-1;
下次请用追问,不要用评论,这样不好看清楚。补充一下回答吧
c=(-a++)+(++b);//a=2,b=3,c=2,a的值为1++=2,负号不会影响a的赋值
d=(b- - )+(++a)-a;//a=3,b=2,d=3
e=(a/(++b))-(b/(--a));//a=2,b=3,e=3/3-3/2,这里注意,后面的--a不会影响前面的a
其实这还不是最深入的理解,看看这个吧:
int a = 1, b = 2, c=5;
c = (++a)+(++a)+a; //a=3,c=8
a = 1;b = 2; c=1;
c = a + (++a)+(++a); //a=3,c=7
a = 1;b = 2; c=1;
c = (++a)+ a + (--a);//a=1,c=5
a = 1;b = 2; c=1;
c = a + (c--);//这个最神奇:c=2
④ C语言刁钻难题
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intsu(intn)//判断是不是素数
{
inti;
if(n<2)//素数必须大于等于2
return0;
for(i=2;i*i<=n;i++)
if(n%i==0)
return0;
return1;
}
intmain()
{
inta[100];//用来存储产生的随机数
inti,n,cnt=0;//cnt表示素数个数
scanf("%d",&n);//要产生的随机数个数
//srand(time());如果不加这句,每次产生的随机数会是一样的。srand()设置rand的起点,time是获取当前系统时间
for(i=0;i<n;i++)
{
a[i]=rand();//产生随机数被存储到a数组
printf("%d",a[i]);//输出
if(su(a[i]))//统计素数个数
cnt++;
}
if(cnt!=0)//如果有素数
{
for(i=0;i<n;i++)
if(su(a[i])
printf("%d",a[i]);
}
return0;
}
⑤ 问几道C语言中的题目
对于第一题:我认为应该如下
#include "stdio.h"
main()
{
char a;
int b;
a=getchar(); scanf("%d",&b);
a=a-'A'+0;
b=b*2;
printf("%c %d",a,b);
}
对于第二题:在scanf函数中,符号*表示在本项读入后不赋值给相应的变量,抑制本次的输入,也就是这项的数值输了也白输。就该题而言,当输入10 20 30时,由于*号出现在第二项,则第二项20就被抑制输入了,由紧接的下一项30代替,而第三项因为没有多余数据输入,保持原来的0不变。
对于第三题:必须了解scanf("%2d%2d",&a,&b);中%2d的含义,它表示输入数据的宽度是2.这你就知道了吧?
对于第四题:我运行了一下,结果是a+b=30,会不会是你弄错了,或者和编译的系统有关?
对于第五题:我们要知道逗号表达式的运算是从左向右运算,然后整个表达式的值是最后一个式子的值。对于该题,先把2给i,然后进行++i的运算,的i为3,最后整个式子的值为i++,即3
对于第六题:对于运算符%要求左右两边均为整型,而对于右边进行的f必须进行强制转换,形式为(int)(f) 。这是特别需要引起注意的,int两边一定要有括号,否则就不是强制转换了。
对于第七题:对于b选项只要一个范例就可以,a代入kk>='A'为真,则kk>='A'‖kk<=’Z’为真,则会整个式子为假,将A代入kk>='A'为真,则kk>='A'‖kk<=’Z’为真,则会整个式子为假。判断不出大小写字母。
对于第八题:就重点说下B选项,对于符号‖来说,当左边为真的时候,右边的式子就不执行了,只有当左边是假的时候才执行右边的。对于在2到6之间的数,左边(c>=2&&c<=6)为真,停止执行,整个式子为真,对于该范围以外的,左边(c>=2&&c<=6)为假,执行中间的(c!=3),为真,整个式子为真。
对于第九题:功能相同的都表示a为0的时候。输出y,a不是0的时候,输出x。也许你颇有疑问的是a选项。对于该选项,我们得看if(a) 表示什么含义,只要a是不为0,if语句就会判断条件为真,就执行下面的语句。
对于第十题:我们必须看清case 2: a++; b++; break;case 3: a++; b++; 这两个语句是属于switch(x)还是switch(y)的,显然是switch(x)的。一起来看,x=1,执行switch(y),又因为y=0,执行case 0: a++; break;此时,a=1,b=0.然后程序就跳到case 2前面的} 号,注意没有跳到整个程序外面,因为case 2前面的} 号的后面没有 break。然后就执行case 2: a++; b++; break,此时=2,b=1。程序结束。
对于第11题:特别注意while语句后面有分号,表示执行空语句。当表达式y--的值是0的时候,就会跳出空语句,执行下面的语句,而此时显然 y--是0,而y本身变成-1 。
对于第12题:k=5,执行while(--k)后,k的值为4,条件为真,就执行printf("%d",k-=3),得到k的值为1,接着while(--k)中的--k,得到k的值为0,条件为假,不执行printf("%d",k-=3)。
对于第13题:开始k=5,n=0;然后switch(k)判断,执行default :n=0;k--;由于后面没有break语句,就执行case 2: case 4:n+=2;k--;break;此时,n=2,k=3.满足k>0&&n<5,接着做,k=3,就执行case 3:n+=1; break;此时n=3,k=3.满足k>0&&n<5,接着做,执行case 3:n+=1; break;此时n=4,k=3,满足k>0&&n<5,接着做,case 3:n+=1; break;此时n=5,k=3,不满足,跳出循环,结束。
我不知道你14题哪里不明白?
对于15题:x=8,第一次执行for语句然后if语句判断8%3=2,为真,执行printf("%d, ",x--); 输出8,x本身为7,再执行continue继续循环,接着执行for语句中的x--,x为6。 第二次执行for语句,if判断,6%3=0,为假,直接执行printf("%d, ",--x);就输出5,x本身也是5.接着执行for语句中的x--,x为4。第三次执行for语句,if判断,4%3=1,为真,执行printf("%d, ",x--); 输出4,执行continue;接着执行for语句中的x--,x为3。第四次执行for语句,if判断,3%3=0,为假,直接执行printf("%d, ",--x);就输出2.
⑥ c语言编程题目
#include<stdio.h>
int main()
{
int i, j, T;
while (scanf("%d", &T) != EOF &&(T>=1&&T<=2000))
{
int a[T][2];
for (i = 0; i < T; i++)
for (j = 0; j < 2; j++)
scanf("%d", &a[i][j]);
for (i = 0; i < T; i++)
{
printf("case %d:\n", i + 1);
printf("%d\n", a[i][0] + a[i][1]);
}
}
return 0;
}
⑦ c语言基础问题,汇编语言,请看下题应该选择什么
厂商值的是硬件和软件的出品商,比如Windows是微软的,还比如主板上的BIOS是指硬件上的。所以确实是提前编译好的。这里你只需要去用就行
这个题目比较刁钻。这个引号内的汇编很迷惑人。程序运行难道不是编译吗?这个时候如果我不看题的话。也会选D的
⑧ 求解c语言的一些题目 100分 好的话追加
序说明]
输入 2 个整数lower 和 upper,输出一张华氏一摄氏温度转换表,华氏温度的取值范
围是[lower,upper], 每次增加 20 F. 计算公式如下, 式中: c 表示摄氏温度,f表示华氏温度。
C= 5x(f一32)/9
运行示例:
Enter lower: 30
Enter upper: 35
fahr celsius
30 -1.1
32 0.0
34 1.1
[程序]
#include <stdio.h>
main( )
{ int fahr, lower, upper,
double celsius
printf (”Enter lower:”);
scanf ("%d”, &lower”);
printf ("Enter upper:”);
scanf (“%d”, &upper);
printf(”fahr celsius \n”);
for (fahr=lower;____(1)____;____(2)____){
celsius =____(3)____ ;
printf (“%d ____ (4)_____ \n“, fahr, celsius);
}
}
[供选择的答案]
计算机等级考试试卷(二级C)第1页(共7页)
(l) A、 fahr <= upper B、fahr < upper
C 、 fahr >=uppa r D、 fahr > upper
(2) A、 fahr++ B、 fahr =fahr -2
C、 fahr + 2 D、fahr + 2
(3) A、5*(fahr – 32) /9 B、(5.0/9.0)*(fahr – 32)
C、 5/9*(fahr – 32) D、 5 * fahr - 32/9
(4) A、 %6d B、%6.2f C、%6.lf D、%6.0f
试题2 (每小题3分,共12分)
阅读下列程序说明和程序. 在每小题提供的若干可选答案中, 挑选一个正确答案.
[程序说明]
输入 2 个正整数 a 和 n, 求 a+aa+aaa+aa...a(n 个 a)之和.要求定义并调用函数
fn(a,n), 它的功能是返回aa...a(n个a).例如,fn(3,2)的返回值是33.
运行示例,
Enter a: 2
Enter n: 3
sum = 246
[程序]
#include<stdio.h>
main ( )
{ int i, n;
long a, sn;
long fn(long a, int n);
printf(“Enter a;”);
scanf (“%ld”, &a);
printf(“Enter n:”);
scanf(“%d”,&n);
_________(5)_______________
for ( i=1;i<=n; i++)
_________(6)____________
printf(“sum=%ld\n”,sn);
}
long fn(long a,int n)
{ int i;
long tn=0;
for(i=1;i<=n;i++) {
tn=tn+a;
________(7)____________
}
计算机等级考试试卷(二级C)笫 2 页(共 7 页)
(8)
}
[供选择的答案]
(5) A sn=0; B ;
C sn=1; D sn=a;
(6) A sn=sn+fn(a, I ); B sn=sn+fn(a,n);
C sn=sn+fn(I,a); D sn=sn+fn(I,n);
(7) A tn=tn*10; B a=a*10;
C sn=tn*10; D sn=sn+a*10;
(8) A return; B return sn;
C return a; D return tn;
试题3(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
[程序说明]
输入一个以回车结束的字符串(少于80个字符),删除其中除英文字母和数字字符以外的其他字符,再判断新字符串是否对称(不区分大小写字母)。
运行示例1:
Enter a string : Madam I’m Adam
Yes
运行示例2:
Enter a string : elephant
No
#include <stdio.h>
#include <___(9)___>
main()
{ int flag ,i,k,length;
char str[80];
printf(“Enter a string:”);
gets(str);
i=k=0;
while(str[i]!=’\0’){
if(isupper(str[i])) str[i]=tolower(str[i]);
if(isdigit(str[i])//isalpha(str[i])){
(____10____)
k++;
}
i++;
计算机等级考试试卷(二级C)笫 3 页(共 7 页)
}
____(11)______
length=k;
flag=1;
for(k=0;k<=length/2;k++)
if(str[k]!=str[length-1-k]){
_____(12)______
break;}
if(flag) printf(“Yes\n”);
else printf(“No\n”);
}
[供选择的答案]
(9) A 、ctype.h B、 string . h
C、 stdilb .h D、 math .h
(10) A、 i++; B、 str[k]=str[i];
C、 str[i]=str[k]; D、;
(11) A 、str[i]=’\0’; B 、str[i-1]=’\0’;
C、 str[k]=’\0’; D、 ;
(12) A、 flag=1; B、 flag=0;
C 、; D 、continue;
试题4 (每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案.
[程序]
#I include<stdio.h>
main()
{ int i,,m;
scanf(“%d”,&m);
for(i=2;i<=m/2;i++)
if(m%i==0){
printf(“%d#”,i);
break;} /*第8行*
printf(“%d”,i);}
(13)程序运行时,输入5,输出____13_____
A、3 B、3#3
C、3#4 D、3#5
(14)程序运行时,输入9,输出___14______
计算机等级考试试卷(二级C)笫 4页(共 7 页)
A、 3 B、 3#3
C、 3#4 D、 3#5
(15)将第8行改为”continue;”后,程序运行时,输入9,输出——。
A、 3 B、 3#3
C、 3#4 D、3#5
(16)将第8行改为“;“后,程序运行时,输入9,输出——。
A 、3 B、 3#3
C、 3#4 D、 3#5
试题5(每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
[程序]
#include<stdio.h>
main()
{int i,j,temp;
int a[3][3]={1,2,3,4,5,6,7,8,9};
void f(int *x,int *y);
for(i=0; i<3;i++)
for(j=0;j<3;j++)
if(i<j) f(&a[i][j],&a[j][i]); /*第8行*/
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf(“%2d”, a[i][j]);
}
void f(int *x,int *y)
{ int t;
t=*x; *x=*y; *y=t;
}
(17)程序的输出是—(17)——。
A、3 2 1 6 5 4 9 8 7 B、 7 8 9 4 5 6 1 2 3
C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9
(18)将第8行改为”f(&a[I][j],&a[j][I]);”后,程序的输出是——(18)——。
A、 3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3
C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9、
(19)将第8行改为”if(I<2) f(&a[I][j],&a[2-I][j]);”后,程序的输出是——(19)——。
A、3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3
C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9、
(20)将第8行改为”if(j<2) f(&a[I][2-j]);”后,程序的输出是——(20)——。
计算机等级考试试卷(二级C)笫 5页(共 7 页)
A、3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3
C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9
试题6(每小题3分,共12分)
#include<stdio.h>
main()
{ int i,x1,x2;
int a[5]={1,2,3,4,5};
void f1(int x,int y), f2 (int *x, int *y);
x1=x2=0;
for(i=1;i<5; i++){
if (a[i]<a[x1])
x2=i;
}
f2(&a[x1], &a[0]);
for (i=0;i<5;i++) printf (“%2d”,a[i]);
printf (“\n”);
f1 (a[x2], a[1]);
for (i=0; i<5;i++) printf (“%2d”,a[i]);
printf (“\n”);
f2(&a[x2], &a[4]);
for (i=0; i<5;i++) printf (“%2d”,a[i]);
printf (“\n”);
f1 (a[x1],a[3]);
for (i=0; i<5;i++) printf (“%2d”,a[i]);
printf (“\n”);
}
void f1 (int *x, int *y)
{ int t;
t=x; x=y; y=t;
}
void f2(int *x, int *y)
{ int t;
t=*x; *x=*y; *y=t;
}
(21) 程序运行时,第1行输出——(21)——。
A.1 2 3 4 5 B。2 1 3 4 5
计算机等级考试试卷(二级C)笫 6页(共 7 页)
C、1 2 3 5 4 D、5 2 3 4 1
(22) 程序运行时,第2行输出 :_____(22)_____
A、2 1 3 4 5 B、5 2 3 4 1
C、2 5 3 4 1 D、1 2 3 4 5
(23)程序运行时,第3行输出 _______(23)______ .
A、1 2 3 5 4 B、2 5 3 4 1
C、1 2 3 4 5 D、5 2 3 4 1
(24)程序运行时,第4行输出 _______(24)_____ .
A、5 2 3 1 4 B、1 2 3 4 5
C、1 2 3 5 4 D、5 2 3 4 1
试题7 (28 分)
从n个不同的元素中,每次取出 k个不同的元素,丕管其顺序合并成一组,称为组合.
组合种数计箅公式如下..
Cnk=n!/((n-k)!*k!)
1)定义函数fact(n)计算n!,类型double.
2)定义函数cal(k,n),计算组合种数Cnk,类型double.要求调用fact(n)计算n!.
3)定义函数main(),输入正整数n,输出n的所有组合数
Cnk,要求调用函数cal(k,n).
答案:
试题1:1、A 2、D 3、B 4、C
试题2:5、A 6、A 7、A 8、D
试题3:9、A 10、B 11、A 12、B
试题4:13、A 14、B 15、D 16、D
试题5:17、D 18、C 19、B 20、A
试题6:21、D 22、D 23、D 24、B
试题7:
# include “stdio.h”
double fact(int n)
{int k; double result=1;
for(k=1;k<=n;k++)
result*=k;
return result;
}
double cal(int k, int n)
{double result;
result=fact(n)/(fact(n-k)*fact(k));
return result;
}
void main( )
{int n,k;
double x;
scanf(“%d”,&n);
for(k=1;k<=n;k++)
{x=cal(k,n);
printf(“%f\n”,x);
}
}
⑨ C语言的一些题目。会的帮解答一下。 谢谢
一、 改错题
1、int a;
scanf(“%d”,&a);
2、if(a==b) printf(“Hello”);
3、if (ch==’A’) printf(“Item A selected”);
4、打印出1~50之间的所有整数:
for(i=1;i<=50;i++)printf(“%d”,i);
5、欲定义数组以对应数学公式中的a1、a2、a3、a4:
int a[3];
二、 程序阅读与填空
1、交换变量a和b中值:t=a;a=b;b=t 。
2、判断某整数m是否能被5整除,其表达式是 m%5=0 。
3、以下语句的循环次数为 50 次。For(i=1;i<=50;i++);
4、要给一个长度为4的一维数组a[]一次性赋初值分别为2,4,6,8,如何写定义语句a[]={2,4,6,8} 。
5、程序填空,以下是求一个方阵主对角线上元素的和的程序段。
….
for(i=0;i<=3;i++)
for(j=0;j<=3;j++)
if (i=j ) s=s+ ;
…
6、7、 有语病吧?
8、有如下语句:int a=5,b=3;
int *p=&a,*q=&b;
*p=4;*q=a;
执行完这些语句后,变量a中存放的是 4 ,变量b中存放的是 5 。
9、有如下程序段:
if (a<b)
{
if (c==d) x=1;
else x=2;
}
若a的值为3,b的值为4,c的值为9,d的值为10,则执行完该程序段后,变量x的值是 2 。
(3分)
10、程序填空,打印出斐波那齐数列的前10项。
main()
{
int i,f[11];
f[1]=1;f[2]=1;
printf(“%d,%d,”,f[1],f[2]);
for(i=3;i<=10;i++)
{f[i]= f[i-1]+f[i-2]; printf(“%d”,f[i] );}
}
四、 编程题
1、 编程求解下列函数的值
程序代码:
#include<stdio.h>
main()
{
int x,Y;
scanf("%d",&x);
if(x>=0)Y=x+1;
else Y=x+10;
printf("%d",Y);
}
2、求1~200之间自然数中的偶数之和
#include<stdio.h>
main()
{
int i,sum=0;
for(i=2;i<=200;i=i+2)sum+=i;
printf("%d",sum);
}
⑩ C语言这道关于swtich语句的题目,求解
输出是#&——进入switch(a>0),由于a>0成立值为1,所以执行case 1:后的语句;case 1:后嵌套了一个switch(b<0),由于b<0为假值为0,但switch(b<0)中没有case 0:,所以直接跳过switch(b<0;又由于switch(a>0)的case 1:后没有break;,所以就要直接向下执行case 0:后的语句;case 0:后嵌套了switch(c==5),c==5为真值是1,所以执行switch(c==5)的case 1:后的语句printf("#");打出#来,接着被break;跳出switch(c==5),顺序执行switch(a>0)的default:后的语句printf("&");指出&来,然后跳出switch(a>0)语句,执行printf("\n");回车结束程序。