文档库 最新最全的文档下载
当前位置:文档库 › C语言老师所给习题解答

C语言老师所给习题解答

C语言老师所给习题解答
C语言老师所给习题解答

(本内容由洪文杰同学提供,在此表示感谢!)

C语言上机题汇总

1.输入三角形两个边长及其夹角(角度值),求第三边边长和三角型面积。

#include

#include

float pi=3.141592;

int main()

{

float a,b,c,v,s;

scanf("%f%f%f",&a,&b,&v);

c=sqrt(a*a+b*b-2*a*b*cos(v/180*pi));

s=a*b*sin(v/180*pi)/2;

printf("c=%0.2f,s=%0.2f\n",c,s);

return 0;

} 扩展:编写已知三角形三边求面积的函数。#include

#include

int main()

{

float a,b,c,s,area;

printf("依次输入a,b,c(空格识别一个数):"); scanf("%f%f%f,",&a,&b,&c);

if(a+b>c&&a-b

{p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("三角形面积是:%f\n",s);

}

else printf("这不是三角形\n");

}

2输入一个字符,若是小写字母,则转换成大写字母输出;若是大写字母,则转换成小写字母输出。

#include main()

{

char ch;

printf("input:"); scanf("%c",&ch);

if(ch>='a'&&ch<='z')

printf("%c",ch-32);

else if(ch>='A'&&ch<='Z')

printf("%c",ch+32);

else printf("input error!"); }

3输入一个大写字母,输出字母表中它前面的字母和后面的字母。如果输入的字母为A或Z,则分别输出提示信息“没有前面的字母”或“没有后面的字母”。

#include

void main()

{

char ch, c;

bool flag= 1;

while(flag)

{

printf("请输入一个大写字母:\n");

scanf("%c%c", &ch, &c);

if(ch > 'A' && ch < 'Z') printf("%c, %c\n", ch-1, ch+1);

else if(ch == 'A') printf("%c\n 没有前面的字母\n", ch+1);

else if(ch == 'Z') printf("%c\n 没有后面的字母\n", ch-1);

else if(ch == 'q') flag= 0;

else

printf("----输入的为非法字符!\n");

printf("\n");

}

}

4编写程序,输入一个整数,判断它能否被3、5、7整除,并根据情况输出下列信息:能同时被3、5、7整除。

能同时被3、5、7中的两个数整除,并输出这两个数。

只能被3、5、7中的一个数整除,输出该数。

不能被3、5、7中的任何一个数整除。

范例1

#include int main() {

int m;

scanf("%d",&m);

if ((m/3=0)&&(m/5=0)&&(m/7=0)) printf("能同时被3,5,7整除");

else if( (m/3=0)&&(m/5=0)&&(m/7!=0)) printf("能被3和5整除,");

else if ((m/3=0)&&(m/7=0)&&(m/5!=0)) printf("能被3和7整除,");

else if ((m/7=0)&&(m/5=0)&&(m/3!=0)) printf("能被7和5整除,");

else if ((m/7=0)&&(m/5!=0)&&(m/3!=0)) printf("能被7整除,");

else if ((m/7!=0)&&(m/5=0)&&(m/3!=0)) printf("能被5整除,");

else if ((m/7!=0)&&(m/5!=0)&&(m/3=0)) printf("能被3整除,");

else

printf("不能被3,5,7任一个整除"); return 0;

}

范例2

#include "stdio.h"

main()

{

int x,y,z;

scanf("d%",x);

if (x%3==0 &&x%5==0&&x%7==0)printf("能同时被3个数整除");else if( (x%3==0&&x%5==0&&x%7!=0)printf("3,5"); else if(x%7==0&&x%5==0&&x%3!=0) printf("5,7");

else if(x%7==0&&x%5==0&&x%5!=0))printf("3,7");

else if(x%3==0&&x%5!=0&&x%7!=0)printf("3");

else if(x%3!=0&&x%5==0&&x%7!=0)printf("5")

else if(x%3!=0&&x%5!=0&&x%7==0)printf("7");

else if (x%3!=0&&x%5!=0&&x%7!=0)printf("都不能被整除") }

5已知正整数A>B>C且A+B+C<100,求满足1

A2

+

1

B2

=

1

C2

共有多少组,并输出满足条件的组合。

#include "stdio.h"

main()

{int a,b,c,cout=0;

for(c=1;c<100;c++)

for(b=c+1;b<100;b++)

if(1.0/(a*a)+1.0/(b*b)==1.0/(c*c) ) {

printf("A=%d B=%d C=%d\n", &a,&b,&c ); cout++;

}

printf("%d\n",cout);

}

6求1+1

2

+

1

4

+

1

7

+

1

11

+

1

16

+

1

22

+ 的值,直到最后一项的值小于10-5。

扩展1:求1-1/2+1/4-1/7..... 的值,直到最后一项的值小于10-5。

#define PRECISION 0.00001

int main()

{

float lastValue = 0.0f, totalValue=0.0f; int symbol=1, i = 1,j = 1;

do{

lastValue = ((float)symbol) / i;

i+=j;

j++; symbol *= -1;

totalValue += lastValue;

}

while(lastValue > PRECISION || -lastValue > PRECISION);

printf("s is: %f",totalValue );

getch();

}

扩展2:输入一个数X,计算并输出下式S=X+X^2/2!+X^3/3!+X^4/4!........的值,直到最后一项的绝对值小于10的-5次方(保留两位小数)

#include

#include//fabs() int main() { double x,s,a;

int i;

scanf("%lf",&x);

a=x;

s=a;

for(i=1;;i+=2)

{

a*=x*x*(-1)/((i+1)*(i+2));

if(fabs(a)<1e-7) break;

s+=a;

}

printf("%.8f\n",s);

return 0;

}

7用迭代法求某数a的平方根,已知求平方根的迭代公式为:x n=1

2

(x

n-1

+

a

x

n-1

)。取

a

2

为迭代初值,

迭代的结束条件取x n-x n-1£10-5。

#include"stdio.h"

#include"math.h"

main()

{float a,x0,x1;

printf("\nInput a:");scanf("%f",&a); if(a<0)

printf("Error!\n");

else

{x0=a/2;

x1=(x0+a/x0)/2;

do

{x0=x1;

x1=(x0+a/x0)/2;

}

while(fabs(x0-x1)>1e-6);

printf("sqrt(%f)=%f\n",a,x1);

}

}

8分别输出100以内(不包括100)所有偶数的和与所有奇数的和。

#include main()

{

int x=1,sj=0,so=0; while(x<=100) {

if(x%2==1)

sj+=x;

if(x%2!=1)

so+=x;

x++;

}

printf("sj=%d\n",sj);

printf("so=%d",so); }

9利用嵌套循环输出以下图形(行与行之间无空行,列与列之间无空列):

#

##

###

####

#include int main()

{

int i,j,k;

for(j=1;j<=5-I;j++) printf(“”);for(k=I;k>=1;k--) printf(“#”);printf(“\n”);

}

Return 0;

}

10使用循环找到并输出100以内的所有素数。

int i, j, n=100, m=1, temp=1; for(i=2;i

for(j=2;j

if(i%j==0){

temp = 0;

break;

}

}

if(temp==1){

printf("%d", i);

if(m>=5){

printf("\n");

m = 1;

}

m++;

}

}

11利用循环找出并输出所有的“水仙花数”。“水仙花数”是一个三位数,其各位数字的立方和等于该数

本身。如153=13+53+33,所以153是“水仙花数”。

C语言的"水仙花数"代码

main(){

int i,j,k;

for(i=1;i<10;i++) for(j=0;j<10;j++) for(k=0;k<10;k++) if( (i*100+j*10+k)==((i*i*i)+(j*j*j)+(k*k*k))) printf("%d%d%d ",i,j,k);

getch();

}

C语言的"水仙花数"代码

main(){

int ge,shi,bai,number;

for(number=100;number<1000;number++){ bai=number/100;

shi=(number%100)/10;

ge=number%10;

if(number==bai*bai*bai+shi*shi*shi+ge*ge*g e)

printf("\nnumber=%d\n",number); }

getch();

}

范例三main(){

int i,x,y,z;

for(i=100;i<=999;i++){ x=i%10;/*个位*/

y=(i/10)%10;/*十位*/ z=(i/100)%10;/*百位*/

if (x*x*x + y*y*y + z*z*z == i) printf("%d\n",i);} }

12输出斐波那契数列的前40项。斐波那契数列是个整数数列,其定义为:

f n =

1n=1,n=2

f

n-1

+f

n-2

n>2

ì

í

?

范例一:

#include

int fun(int n)

{

if(n == 1 || n == 2) return 1; else return fun(n-1) + fun(n-2); }

void main()

{

int i;

for(i = 1; i <= 40; i++){

printf("%d\n", fun(i));

}

}

范例二:

main()

{

long fib[40] = {1,1}; int i;

for(i=2;i<40;i++) {

fib[i] = fib[i-1]+fib[i-2]; }

for(i=0;i<40;i++)

{

printf("F%d==%d\n", i, fib[i]);

}

return 0;

}

13输出100以内所有的“同构数”。所谓“同构数”一个正整数,它出现在其平方数的右边。例如:5是25右边的数,25是625右边的数,5和25都是同构数。

#include main()

{

int i;

for(i=1;i<=100;i++)

if(i*i%10==i)

printf("%d",i);

}

14指定一个正整数n,并输入n个整数,用冒泡法将它们由小到大顺序排列并输出。

#include

int main

{

Int I,j,n,temp,a[10];

Scanf(“%d”,&n);

Printf(“ the original numbers:\n”); For(i=0;i

Scanf(“%d”,&a[i]);

For(i=0;i

For(j=0;j

If(a[j-1]>a[j])

{

Temp=a[j-1]>a[j];a[j-1]=a[j];a[j]=temp

}

Printf(“\n the sorted number is :\n” );

For(i=0;j

Printf(“%d”,a[i]);

Return 0;

}

15利用循环打印下列九九乘法表:

1*1= 1

2*1= 2 2*2= 4

3*1= 3 3*2= 6 3*3= 9

4*1= 4 4*2= 8 4*3=12 4*4=16

5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25

6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36

7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49

8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64

9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81

#include

int main()

{

int i;

int j;

for(i=1;i<=9;i++)

{

for(j=1;j<=i;j++)

printf("%d*%d=%d\n",j,i,i*j);

}

return 0;

}

16利用循环打印以下杨辉三角(要求打印7行):

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1 C语言双重循环输出杨辉三角前10行:

直角三角形杨辉三角:

#include

#define M 10

void main()

{

int a[M][M], i , j ; for(i=0;i

for(j=0;j<=i;j++)

{ if(i==j||j==0)

a[i][j]=1;

else

a[i][j]=a[i-1][j]+a[i-1][j-1]; printf("%5d",a[i][j]);

if(i==j)printf("\n");

}

}

金字塔型杨辉三角:

#include

void main()

{

int a[10][10],i,j;

for(i=0;i<10;i++)

{

for(j=10;j>=i;j--)

printf("%2c",' ');/*两个空格*/ for(j=0;j<=i;j++)

{

if(i==j||j==0) a[i][j]=1;

else

a[i][j]=a[i-1][j]+a[i-1][j-1];

printf("%3d ",a[i][j]); /*%3d后一个空格*/

if(i==j)

printf("\n");

}

}

}

17利用循环输出下列图形(无空行和空列):

*

***

*****

*******

#include

Int main()

{

Int I,j,k;

For(i=1;i<=4;i++)

Printf(“”);

For(k=1;k>=1;k--)

Printf(““#””); Printf(“\n”)

}

Return 0;

}

18不使用strcat函数,将两个字符串连接起来。

#include

int a[20],b[20],i=0,j=0; while(a[i]!='\0')

{

i++; }

while(b[i]!='\0') {

a[i++]=b[i++]; }

a[i]='\0'; printf("%s",a);范例二:

#include

#include

#include

int main()

{

char str1[] = "123asd456";

char str2[] = "abcdef";

int len;

len = strlen(str1) + strlen(str2);

char *str3 = (char *)malloc((len+1) * sizeof(char));

int i, j = 0, k = 0;

for(i = 0; i <= len; i++)

{

if (str1[j])

str3[i] = str1[j++];

else if (str2[k])

str3[i] = str2[k++];

else

str3[i] = '\0';

}

printf("%s\n", str3);

return 0;

}

范例二:

#include

main()

{

char a[100],b[100],*p,*q;

scanf("%s%s",a,b);

p=a;

q=b;

while(*p)

++p;

while(*q)

*p++=*q++;

*p='\0';

printf("%s\n",a); }

19编写函数,求1+1

2

+

1

3

+

1

4

+ +

1

n

的值。n的值由键盘获得。

#include

main()

{int i=1,n;double sum=0; scanf("%ld",&n); while(i<=n) {i;sum=sum+1/i;i++;} printf("%f\n",sum);

}

20编写函数int fun(char str[])并在主函数中调用它。此函数的功能是判别字符串str是否为“回文”,若是,返回1,否则返回0(回文是指正反序相同的字符串,如“13531”、“madam”是回文,“1353”、“mrs”不是回文)。

#include #include main()

{int s(char a[20]); char a[20];

int t;

gets(a);

t=s(a);

if(t==1)

printf("yes");

if(t==0)

printf("no");

}

int s(char a[20]) {

int m,n,i;

n=strlen(a);

for (i=0;i

if(a[i]!=a[n-i-1])

return 0;

return 1;

}

21用递归方法计算n!。

扩展:用递归方式计算a!+b!+c!,并要求输出结果

#include

int fac(int n)//如果n 大于十二,改用double 或者long long ,输出也相应改变

{

if(n==0) return 1; else return fac(n-1)*n; }

void main() {

int a,b,c; int sum;

printf("请分别输入a,b,c ,并用逗号隔开:\n");

scanf("%d%d%d",&a,&b,&c); sum=fac(a)+fac(b)+fac(c); printf("%d\n",sum);

}

22用静态局部变量法计算n !。

扩展:编写求n 的阶乘的函数(用到静态局部变量),调用此函数求多项式之和:

1/1!+1/2!+1/3!+…1/n!,直到最后两项之差小于10的负5次方。

#include double jiecheng(int n) {

static double num=1; num*=n; return num; }

void main() { int n;

double sum=0,temp,item=1; for (n=2;;n++) {

sum+=item;

temp=1.0/jiecheng(n); if (item-temp<1e-5)break; item=temp; }

printf("sum=%lf\n",sum);

}

23编写函数,求s =s 1+s 2+s 3+s 4,其中:

s 1=1+12+13+ +

150s 2=1+12+13+ +

1

100s 3=1+12+13+ +

1

150s 4=1+12+13+ +

1

200

#include double fun (int n) { int i; double sum=0.0; for(i=1;i <=n;i++) { sum+=1.0/i; } return sum; main() { int n; double s; printf("\n Input n1\n2\n3\n4: "); scanf("%d%d %d %d ",&n1&n2&n 3&n4); s=fun(n1)+fun(n2)+fun(n3)+ fun(n4); printf("%d",s); }

扩展范例:请编写函数fun ,其功能是:计算并输出下列多项式值: S=1+

3211211+++

++…+50

3211

++++ 注意:n 的值要求大于1但不大于100。 #include

double fun (int n)

{

int i, j,k;

double sum=0.0, t; for(i=1;i <=n;i++) {

t=0.0;

for(j=1;j<=i;j++) t+=j; sum+=1.0/t; }

return sum; main() { int n;

double s; FILE *out;

printf("\nInput n: "); scanf("%d",&n); s=fun(n);

printf("\n\ns=%f\n\n",s); out=fopen("out.dat","w"); for (n = 0; n < 10; n++) fprintf(out, "%f\n", fun(n+50)); fclose(out);

}

24编写程序,计算组合数C m

n

=

m !

n !(m -n )!

。m 和n 由键盘获得。

#include double fact(double s) { double i,a=1; for (i=1;i<=s;i++)

a=a*i; return a;

} int main() {

double x,y,m,n; printf("Enter m: "); scanf("%lf",&m); printf("Enter n: "); scanf("%lf",&n); y=fact(n-m); m=fact(m); n=fact(n); x=n/(y*m);

printf("result=%.0f",x); return 0;

}

25编写函数,求出n 个a 之积。调用该函数,输入两个正整数n 和a ,求

n

aa aa aaa aa a ++++之和。

#include"math.h" main()

{int n,sum=0,i=1,s=2; scanf("%d",&n);

while(i<=n)

{sum=sum+s;s=s+2*pow(10,i); i++;}

printf("sum=%d\n",sum);

26编写程序,使用字符指针将字符数组s 1中的字符串拷贝到字符数组s 2中去。

扩展:将字符串a 复制为字符串b #include Void main()

{ char a[]=”I am a boy.”,b[20]; Int i;

for(i=0;*(a+i)!=’\0’;i++) *(b+i)= *(a+i);

*(b+i)=’\0’;

Printf(“string a is :%s\n ”,a); Printf(“string b is:”); For(i=0;b[i]!=’\0’;i++) Printf(“%c ”,b[i]); Printf(“\n ”); }

27使用“指向函数的指针”编写函数,求多项式x

4

+x -1当x =1.5,2.5,3.5,4.5时的值。

答案详见P149.例题9-16!

28编写函数,将直角坐标(x ,y )转换为极坐标(r ,q )。转换公式为:

r=x2+y2

q=a tan(y

x )

ìí???

#include

#include void f(float &x,float &y); int main()

{

float x,y;

printf("input x:\n"); scanf("%f",&x);

printf("input y:\n"); scanf("%f",&y);

f(x,y);

printf("x=%f\n",x); printf("y=%f\n",y); return 0;

}

void f(float &x,float &y) {

float c=sqrt(x*x+y*y); float q=atan(y/x);

x=c;

y=q;

}

29编写函数,使用指针参数将字符串ch2复制到字符串ch1的末尾,实现ch1与ch2的连接。扩展!:不含指针参数的

#include

#include

main(){

char str1[80],str2[80];

int i=0,j=0;

puts("puts two string:");

gets(str1);

gets(str2);

while(str1[i]!='\0')i++;

while(str2[j]!='\0')str1[i++]=str2[j++]; printf ("result is:%s\n",str1);

}

#include

#include

void string_cat (char *source, char *target) {

char *point=source;

while(*point)

point++;

while(*target!='\0'){

*point=*target;

point++;

target++;

}

*point='\0';

}

int main()

{

char s1[10000],s2[10000]; for(;s1!='\0';)

{

gets(s1);

gets(s2);

string_cat(s1,s2);

puts(s1);

}

printf("\n");

return 0;

}

30利用指针编写程序,将一个一维数组a[10]中的最大元素和首元素换位,最小元素和末元素换位。数组元素由键盘获得。

#include"stdio.h" void main()

{int max,min,*p,a[10],i; for(i=0;i<10;i++) scanf("%d",&a[i]); p=a; max=a[0];

for(i=1;i<10;i++,p++) if(max<*p)

max=*p;

for(i=1;i<10;i++) /*从第二元素开始检查是否是最大元素*/

while(a[i]==max)

a[i]=a[0]; /*将第一个元素赋给最大元素单元*/

a[0]=max; /*将最大值送入第一元素中*/

p=a; min=a[9];

for(i=1;i<10;i++,p++) if(min>*p) min=*p;

for(i=1;i<10;i++) while(a[i]==min) a[i]=a[9]; a[9]=min; for(i=0;i<10;i++) printf("%d",a[i]); }

31试编程序,输入整数a 和b ,若a 2+b 2

大于100,则输出2

2

b a 百位以上(包括百位)的数字,否则输出两数之和。

#include void f1() /*第一题的函数*/

{int a,b;

int i,j;

printf("shu ru liang ge zheng shu a,b:");

scanf("%d,%d",&a,&b);

getchar();

i=a*a;

j=b*b;

if(i>100&&j>100)

{i=i/100;

j=j/100;

printf("%d %d\n",i,j);

}

else printf("%d\n",a+b);

}

void f2(char *s1,int m,char *s2) /*第二题的函

数*/

{char *p;

p=s1+m; strcpy(s2,p); } void main() {char s1[100],s2[100]; int m; f1(); printf("shu ru zhi fu chuan:"); gets(s1); printf("shu ru m:"); scanf("%d",&m); f2(s1,m,s2); printf("fu zhi jie guo ru xia:\n"); puts(s2); getch(); } 32试编程序,求一个整数任意次方的最后三位数。即求y

x 的最后三位数,要求x ,y 从键盘输入,使用循环实现,不能使用数学库函数。

#include #include void main() { int i,j, x,y; long int z=0; printf("Please input x,y:"); scanf("%d,%d",&x,&y); z=pow(x,y); printf("%d",z); printf("\n"); for(i=2;i>=0;i--) { j=(int)(z/pow(10,i))%10; printf("%d",j); } getch(); } 33求9

9的个、十、百位上数字之和。

扩展1:求15

15的个、十、百位上数字之和。 #include int main() {

int i,m=1,sum=0; for(i=1;i<15;i++) {

m=m*15%1000; } while(m) {

sum+=m%10; m/=10; }

printf("%d\n",sum); return 0; }

扩展二:如何将十位百位数字对换,如135变成315

#include

#include

using namespace std;

int exchange(int a)

{

int i = a / 100, j = (a % 100) / 10; return 100 * j + 10 * i + a % 10;

}

int main()

{

int i = 376;

printf("%d\n", exchange(i));

return 0;

}

扩展三:求一c语言编程题,a.b.c分别代表百位,十位,个位.共1000个数字,位置不能变,例如若输入a,b.则排除ab0-ab9这十个数,若输入b,c,则排除0bc-9bc这十个数,依次类推,输完之后最后剩余的三位数都有哪些,

#include

void main()

{

int input[2];

int flag;

int i;

printf("input two number separated by ','\n"); scanf("%d,%d",&input[0],&input[1]);

flag=input[0]*10+input[1];

for(i=100;i<1000;i++)

{

int a,b,c;

a=i/100;

b=i%100/10;

c=i%10;

if((flag!=a*10+b)&&(flag!=b*10+c))

{

printf("%4d",i);

if(i%10==0)printf("\n");

}

}

}

34输出100以内每位数的积大于每位数的和的所有正整数。

#include "stdafx.h"

#include "stdio.h"

void main ( )

{ int n,k=1,s=0,m ;

for (n=1 ; n<=100 ; n++) {

k=1 ; s=0 ;

m=n;

while (m>=1) {

k*=m%10;

s+=m%10;

m=m/10 ;

}

if(k>s) printf("%d\n",n);

}

}

35通过循环按行优先顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。

#include int main(void)

{

int a[5][5],k=1;

for(int i=0;i<5;i++) {

for(int j=0;j<5;j++) {

a[i][j]=k;

k++;

}

}

for(i=0;i<5;i++)

{

for(int j=0;j<=i;j++)

printf("%d ",a[i][j]); printf("\n");

}

return 0;

}

36从键盘输入若干整数(个数小于50),其值在0至4的范围内,用-1作为输入结束的标志。统计每个整数的个数。

#include "stdio.h"

#define N 1000

int main(){

i=0,j=2,h=1,k,l=0,b[N],n,c[N]; while(a[i]!=-1)

scanf("%d",&a[++i]);

i--;

b[1]=a[1];

while(1)

{

for(k=1;k<=h;k++)

if(a[j]==b[k])

l++;

if(l==0)

b[++h]=a[j];

j++;

l=0;

if(j==i+1)

break;

}

for(j=1;j<=h;j++)

printf("%d ",b[j]); k=1,l=0,n=0;

while(1)

{ for(j=1;j<=i;j++)

if(a[j]==b[k])

l++;

c[++n]=l;

l=0;

if(k==h)

break;

k++;

}

k=0;

putchar('\n');

for(i=1;i<=n;i++)

printf("第%d个数出现%d次\n",b[++k],c[i]); }

37定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数,然后按顺序每6个数求出一个平均值,放在另一个数组中并输出。

#include "stdio.h"

void main()

{

int a[30],b[5],i=0,j;

while(i<30) a[i++] =2*(i+1);

i=0;

while(i<5)

{j=i*6; b[i]=a[j]+a[j+1]+a[j+2]+a[j+3]+a[j+4]+a[j+5];b[i]/=6; i++; }

i=0;

while(i<5) printf("%d\t",b[i++]);

}

38数组a包括10个整数,把a中所有的后项除以前项之商取整后存入数组b,并按每行3个元素的格式输出数组b。

# include

void main()

{

int a[10],b[5],i,,j;

printf ("请输入10个数"); for (i=0;i<10;i++);

scanf("%d",&a[i]);

for (i=9;i>0;i-2)

{

for (j=0;j<5;j++)

b[j]=a[i]%a[i-1]; }

for(j=0;j<5;j++)

for (i=1;i<3;i++) printf("%d",b[i]; printf("\n");

}

39编写函数sstrcmp,实现两个字符串的比较(即实现与strcmp函数功能相同的函数)。若两个字符串相等,返回值为0;若不等,则返回两个对应字符串的ASCII码值差值。若前者大,应返回正值,若后者大,应返回负值。

int __cdecl strcmp (

const char * src,

const char * dst

)

{

int ret = 0 ;

while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)

++src, ++dst;

if ( ret < 0 )

ret = -1 ;

else if ( ret > 0 )

ret = 1 ;

return( ret );

}

判断题

81.feof(fp)函数用来判断fp所指向的文件是否结束,若遇到文件结束符,函数feof()的返回值是真(非0),否则为假(0) T

80. C语言中,文件的存取方式可以是随机存取,也可以是顺序存取T

79. C语言可以处理的文件类型只有文本文件 F

78. "文件"一般指存储在外部介质上的数据集合T

77. 在定义一个共用体变量时,系统分配给它的存储空间是该共用体变量中占用最大存储空间的成员

所需的存储空间T

76. 在C语言中,一个包含若干不同类型的数据项的数据结构称为结构体T

75. 已知共用体

union u

{

int a;

char c;

float f;

}

其各个成员地址&u.a、&u. c、&u.f是不相同的 F

74. 使几个不同类型的变量共占同一段内存的结构称共用体T

73. 若已定义指向结构体变量stu的指针p,在引用结构体成员时,有三种等价的形式,即stu.成员名、*p.成员名和p->成员名 F

72. 只可以通过求地址运算"&"获得地址值 F

71. 语句"int *pi,pj"定义了两个指针变量 F

70. 设int a,*p;则语句p=&a;中的运算符"&"的含义是取变量地址T

69. 空指针p十指相地址为0的存储单元的指针 F

68. 可以利用指针实现函数返回多个值的效果T

67. 地址运算符"&"只能应用于变量和数组元素的运算T

66. 作为函数形式参数时,int x[][5]与int (*x)[5]两种写法等价T

65. 指向函数的指针变量的值是一个函数的入口地址T

64. 如果一个变量的值是一级指针变量的地址,则称这个变量为二级指针变量T

63. 二维M*N数组的名字是一个指向N元数组的指针常量T

62. 进行宏定义时,可以引用已经定义的宏名进行层层置换T

61. 宏名没有作用域,在整个文件范围内都有效F

60. 带参数的宏名无类型,它的参数也无类型T

59. 带参数的宏定义,进行宏展开时与函数调用主要区别是:只替换,不求值T

58. 被包含的文件修改后,凡包含此文件的所有文件都要重新编译T

57. 在一个函数中定义的静态局部变量不能被另一个函数调用 F

56. 在程序运行过程中,系统分配给实参和形参的内存单元是相同的F

55. 在C语言中,主函数可以调用任意一个函数,但是不能使用其他函数中定义的变量T

54. 用数组名作为函数调用时的实参,实际上传递给形参的是数组全部元素的值F

53. 一个函数中有且只能有一个return语句F

52. 所有定义在主函数之前的函数无需进行声明T

51. 如果一个静态(static)或外部(extern)数组不进行初始化,则对数值型数组隐含初值为0 T

50. 如果函数值的类型与返回值类型不一致,以函数值类型为准T

49. int、auto、extern、void都是属于C语言关键字T

48. C语言规定,程序中各函数之间既允许嵌套定义,也允许嵌套调用F

47. C语言程序由函数为单位,可以包含一个或多个函数,函数名任意F

46. 在函数的定义和调用过程中,形式参数和实在参数数目可以不一致F

45. 若一个函数的返回类型为void,则表示其没有返回值T

44. 在定义二维数组时,可以将该数组的两个维数全部省略F

43. 已有定义int x[5];,则该定义语句说明x是具有5个元素的一维数组,且数组元素是x[1], x[2], x[3], x[4], x[5] F

42. 数组的每个元素占用相同的字节数T

41. 数组必须先定义再使用T

40. 若有定义:double x[3][5];则x数组中行下标的下限为0,列下标的上限为4 T

39. 若对字符串str1和字符串str2比较大小,必须使用字符比较函数strcmp(str1, str2),不能使用关系运算符进行比较,例如str1==str2 Y T

38. 对两个数组a和b进行如下初始化:char a[ ]="ABCDEF";char a[ ]={'A','B','C','D','E','F'};a数组和b 数组的长度相同 F

37. 定义数组时,数组下表可以是整型常量或正整型常量表达式F

36. 当数组长度与初值个数不相同时,在定义数组时必须指定数组的长度T

35. int a[9]; 则a数组的下标范围是1~9 F

34. C语言中,对数组定义大小事,若想在程序运行时改变大小,可用下面的语句段定义

int m;

scanf("%d", &m);

int x[m]; F

33. C语言编译系统为所定义的数组变量在内存中是分配一片连续的存储单元T

32. 数组的下标从1开始F

31. 二维数组a[2][3]有6个数组元素T

30. 能正确表达逻辑关系"0 F

29. 带有语句标号的语句的正确书写方法是"语句标号:语句" T

28. while循环语句至少无条件执行一次循环体 F

27. goto语句和break语句都能够实现使程序执行的流程从循环体内跳至循环体外T

26. for循环语句只能用于循环次数已经确定的情况F

25. for循环语句先判断循环条件是否成立,然后再决定是否执行循环体T

24. do-while循环语句中,根据情况可以省略关键字while F

23. do-while循环语句的特点是先执行循环体,然后判断循环条件是否成立T

22. continue语句在循环体中出现,其作用是结束本次循环,接着进行是否执行下一循环的判定T

21. 在逻辑表达式的求解过程中,并非所有的逻辑运算符都被执行T

20. 在VC++ 6.0中,switch与case后的表达式可以为任意类型F

19. 在switch语句中必须使用break语句F

18. 在if语句中,if后面的表达式可以是关系表达式与逻辑表达式,但不能是算术表达式F

17. 在C语言中,逻辑"真"等价于不等于0的数T

16. 选择结构不可以使用嵌套形式,但是循环结构可以使用嵌套形式F

15. 所有逻辑运算符的优先级都高于关系运算符F

14. 设x、t均为int型变量,则执行语句x=10;t=x&&x>10;后,t的值为0 T

13. 关于if语句中,条件表达式只能是关系表达式或逻辑表达式F

12. 关于if语句中,条件表达式的括号不可以省略T

11. break语句只能用于switch语句中F

10. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值F

9. 在C语言中,变量必需先定义后使用T

8. 在C语言中,5种基本数据类型的存储空间长度的排列顺序为:charT

7. 在C语程序中,无论是整数还是实数,都能被准确无误地表示F

6. 在C程序中,每行中只能写一条语句F

5. 在C程序中,%是只能用于整数运算的运算符T

4. 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变T

3. C语言中字符型、整型、实型都能用八进制表示F

2. C程序中的关键字必须小写,其他标识符不区分大小写F

1. 在C程序中,FLAG和flag是两个不同的变量

选择题

1.以下属于C语言关键字的是___.

NULL file include typedef

2.正确的自定义标识符是___.

If a*b if 8pq

3.一个C程序的执行是从___.

本程序的main函数开始,到main函数结束

4.数据类型自动转换的规则是___.

把数据由低类型转换到高类型

把赋值号右边的数据类型转换到赋值号左边的数据类型

5.设x和y都是int型变量,则执行表达式x=(y=4, z=16, w=32)后,x的值是32___.

6. 以下叙述不正确的是___.

一个C源程序可由一个或多个函数组成

一个C源程序必须包含一个main函数

C程序的基本组成单位是函数

在C程序中,注释说明只能位于一条语句的后面

7. C语言规定:在一个源程序中,main函数的位置可以任意.

8. 字符串"a\nb"中的字符个数是_3__.

9. 设int a = 0, b = 5; 执行表达式a++和b++后,表达式a+b的值是__6_.

10. 语句printf("%%d%d", 123); 将输出%d123 .

11. 设x的值为15,n的值为2,则表达式x %= (n += 3)运算后,x的值是_0_.

12. 若有语句int a = 5; a++; 此处表达式a++的值是__6_.

13. 以下叙述正确的是___.

在C程序中,main函数必须位于程序的最前面

C程序的每行中只能写一条语句

C语言本身没有输入输出语句

在对一个C程序进行编译的过程中,可发现注释中的拼写错误

14. 一个C语言程序是由___.

一个主程序和若干子程序组成

函数组成

若干过程组成

若干子程序组成

15. C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符___. 必须为字母或下划线

16. 下列选项中,可以作为C语言标识符的是___.

3stu #stu stu3 stu.3

17. 下列叙述正确的是___.

C语言中的数据的类型不同,在内存中占据不同长度的存储单元.

18. 下列关于C语言用户标识符的叙述正确的是___.

用户标识符中不可以出现中划线,但可以出现下划线.

19. 下列四组选项中,均不是C语言关键字的选项是___.

define IF type getc char printf include scanf case while go pow

20. 下列四个选项中,均是C语言关键字的选项是___.

auto enum include switch typedef continue signed union scanf if struct type

21. 下面四个选项中,均不合法的用户标识符的选项是___.

A P_0 do float la0 _A b-a goto int _123 temp INT

22.下面不正确的字符串常量是___.

'abc' "12'12" "0" "VV" (V代表一个空格)

23. 若有说明语句:char c='\72';则变量c包含1个字节

24. 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为___. double

25. 转义字符'\t'表示___.横向跳格,即跳到下一个输出区

26. 以下叙述不正确的是___.

C语言中的常量包括整型常量、浮点常量、字字符常量、符号常量等

整型常量在C语言中有十进制、八进制和十六进制三种不同形式

C语言中,变量必须先定义后使用

变量被定义后,变量名是固定的,变量的值在程序运行期间是不可随时被改变的

27以下叙述不正确的是___.

C语言中的字符常量使用一对单引号(')括起来的单个字符

字符串常量使用一对双引号("")括起来的字符序列

字符型数据与整形数据之间不可以通用

为了便于判断字符串是否结束,系统会自动在最后一个字符后加上一个转义字符('\0')

28. 若a=12,n=3,则执行表达式a%=n+3后a的值为_0__.

29. 若A=0,B=1,表达式!A&&B的值为__1_.

30. 在VC++6.0环境中,字符串"A"应占字节数为__2_.

31. 若x为float型变量,y为double型变量,a为int型变量,b为long型变量,c为char型变量,则表达式x+y*a/x+b/y+c计算结果的类型为___. double

32. 若有语句char a='\xab';则变量a包含的字符数为___.1

33. 已知梯形的上底为a,下底为b,高为h,用C语言写的正确的面积公式是___. 1.0/2*(a+b)*h

34. 若x、i、j和k都是int型变量,则执行下面表达式后x的值为___. 32

x=(i=4, j=16, k=32)

35. 假设所有变量均为整型,则表达式(a=2, b=5, b++, a+b)的值是___.8

36. 若有代数式3ae÷bc,则不正确的C语言表达式是___.

a/b/c*e*3 3*a*e/b/c 3*a*e/b*c a*e/c/b*3

37. 已知各变量的类型说明如下:

int k,a,b;

unsigned long w=5;

double x=1.42;

则以下不符合C语言语法的表达式是___.

x%(-3) w+=-2 k=(a=2,b=3,a+b) a+=a-=(b=4)*(a=3)

38. 已知各变量的类型说明如下:

int i=8, k, a, b;

unsigned long w=5;

double x=1.42, y=5.2;

则以下符合C语言语法的表达式是.a+=a-=(b=4)*(a=3) a=a*3=2 x%(-3) y=float(i)

在C程序中,逗号运算符的优先级最低

在C程序中,APH和aph是两个不同的变量

若a和b类型相同,在执行了赋值表达式a=b后b中的值将放入a中而b中的值不变

当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值40. 以下正确的叙述是___.

在C程序中,每行中只能写一条语句

若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数

在C程序中,无论是整数还是实数,都能被准确无误地表示

在C程序中,%是只能用于整数运算的运算符

41. 已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2中的值为___.D

42. 设C语言中,若一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为:0~65535

43. C语言中确定数据存储的格式、范围与有效位数的依据是___.

数据类型数据大小数据范围数据正负

44. 设a,c为int型变量,进行a=(c=5, c+5, c/2)运算后的结果为___.2

45. 下列转义字符中,错误的是___.

'\0xa5' '\031' '\b' '\"'

46. 字符串"\\\\1234\\\\\n"在内存中占用的字节数是___.10

47. 与k=n++完全等价的表达式是___. k=n, n=n+1

48. 已有定义char s1,s2;下面正确的语句是___. scanf ("%c%c", &s1,&s2);

49. 为下面的程序输入数据,使得i=10 , k='a' , j=15 ,正确的键盘输入方法是___.10a15<回车>

#include

int main()

{

int i , j , k ;

scanf("%d%c%d",&i,&j,&k);

printf("i=%d,j=%c,k=%d\n",i,k,j);

return 0;

}

50. 运行下面的程序,正确的输出结果是___.68.756303, □□□-789.13

#include

int main()

{

float x=68.7563, y=-789.125;

printf("%f, %10.2f\n",x,y);

return 0;

}

51. 已知float x=2.23, y=4.35 ; ,根据下面的输出结果,正确的程序段是___.

printf("x=%8.6f,y=%8.6f\n",x,y); printf("y+x=%4.2f,y-x=%4.2f\n",y+x,y-x);

x=2.230000, y=4.350000

y+x=6.58, y-x=2.12

52. putchar函数可以向终端输出一个___.字符或字符型变量值

53. 已有定义int a=-2;和输出语句:printf("%8lx", a);以下正确的叙述是___.

%8lx不是错误的格式符,其中数字8规定了输出字段的宽度

输入项可以为一实型常量,如scanf("%f", 3.5);

只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d, b=%d");

当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f", &f);

当输入数据时,必须指明变量的地址,如scanf("%f", &f);

55. 以下能正确地定义整型变量a,b和c并为其赋初值5的语句是___.int a=5,b=5,c=5;

56. 已知ch是字符型变量,下面不正确的赋值语句是___.ch='a+b';

57. 若有x=15, y=40, m=100, 执行了语句m=(x>y)?x:y; 后,m的值为___.40

59. C语言中表示"a和b都大于c"的表达式为___.a>c&&b>c

60. C语言中表示"a和b中至少有一个小于c"的表达式为___.NOT(A AND B>C)

61. 以下关于运算符优先顺序的描述中正确的是___.

赋值运算符<逻辑与运算符<关系运算符<算术运算符

62. 下列运算符中优先级最高的是___.

< +&& !=

63. 为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与___配对.

其之前最近的if

64. 逻辑运算符的运算对象的数据类型___.可以是任何类型的数据

65. 能正确表示x的取值范围在[0,100]或[-10,-5]内的表达式是___.

(x>=-10) && (x<=-5) || (x>=0) && (x<=100)

67. 对于int x, y; 语句if(x<0) y=-1; else if(!x) y=0; else y=1; 等价于___.

if(x!0) if(x>0) y=1; else y=-1; else y=0;

68. 要求当a的值为奇数时,表达式的值为"真";当a的值为偶数时,表达式的值为"假".以下不满足要求的是___.!(a%2)

69. 关系表达式a≤x x>=a && x<>

70. 若有a=2, b=3, c=4, 则表达式a==3和a=3的值分别为___.0, 3

71. 表达式!(1<3)||(2>5)和!(4<=8)&&(7>=3)的值分别为___.0, 0

72. 若a=4,计算表达是a=1, a+5, a++的值为___.1

73. 逻辑运算符两侧运算对象的数据类型___.可以是任何类型的数据

74. 设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为___.2

75. 下列表达式中,值为0的表达式是___.

6>5>4 3>4==0 3!=3>4 3!=0

76. 下列表达式中,结果为1的表达式是___.!0==1

77. 设整型变量x、y和z的值分别为3、2、1,则下列程序段的输出为___.1, 2, 1

if(x>y) x=y;

if(x>z) x=z;

printf("%d, %d, %d\n", x, y, z);

78. 若有以下变量定义:float x; int a, b; 则正确的switch语句是___.

switch(a+b) { case 1: printf("*\n"); case 1+2: printf("**\n"); }

79. 设int a=3;,则表达式a<1&&--a>1的运算结果和a的值分别为___.0, 3

80. 在C语言的循环语句for、while、do-while中,用于直接中断最内层循环的语句是___.

Switch continue break if

81. while循环语句中,一定要有能使此表达式的值变为___的操作,否则循环将会无限进行下去.0

82. for语句中的表达式可以部分或全部省略,但两个___不可省略.但当三个表达式均省略后,因缺少条件判断,循环会无限地执行下去,形成死循环. ;

由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句do-while循环由do开始,用while结束,在while(表达式)后面不能写分号

在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作

do-while循环中,根据情况可以省略while

84. 以下正确的描述是___.

continue语句的作用是结束整个循环的执行

只能在循环体内和switch语句体内使用break语句

在循环体内使用break语句或continue语句的作用相同

从多层循环嵌套中退出时,只能使用goto语句

85. 已定义int j ;则下面程序段的输出结果是___.789

for(j=7; j<10; j++) printf("%d", j) ;

86. 执行以下程序段后,变量a,b,c的值分别为___.a=8,b=8,c=10

int x=10, y=9;

int a, b, c;

a=(--x==y++) ? --x : ++y;

b=x++;

c=y;

87. 设有程序段

int k=10;

while(k=0) k=k-1;

则下面描述中正确的是___.循环体语句一次也不执行

88. 执行语句for(i=1; i++<4;); 后,变量i的值是___.5

89. 有以下程序段

int x=0, s=0;

while(!x!=0) s+=++x;

printf("%d", s);

则下面的描述正确的是___.运行程序段后输出1

90. 有以下for循环,正确的描述是___.执行5次

for(a=0, b=0; (b!=123) && (a<=4); a++)

91. 下面关于for循环语句说法正确的是___.是无限循环

int i, k;

for(i=0, k=-1; k=1; i++, k++)

printf("***");

92. 下面程序段的运行结果是___.4

int n=0;

while(n++<=2);

printf("%d", n);

93. 程序段如下:

int k=1;

while(!k==0) {k=k+1; printf("%d\n", k);}

下列说法正确的是___.循环是无限循环

94. 对以下程序段的描述正确的是___.循环执行一次

x=-1; do{x=x*x;} while(!x);

C语言常见复习题(选择填空)及参考答案

C语言常见复习题及参考答案 一、选择题 1.下述标识符中,()是合法的用户标识符。 A.A#C B.getch C.void D.ab* 2.在C语言中,字符型数据在内存中是以()形式存放的。 A.原码 B.BCD码 C.反码 D.ASCII码 3.以下选项中不合法的用户标识符是()。 A.abc.c B.file C.Main D.PRONTF 4.以下选项中不合法的用户标识符是()。 A.123 B.printf C.Anbsp; D.Dim 5.可以在C语言程序中用做用户标识符的一组标识符是()。 A.void B.as-b3 C.for D.2c define -123 -abc Do WORD If cas SIG 6.在以下各组标识符中,合法的用户标识符是(1)、(2)、(3)。 (1)A.001 B.table_1 C.0_t D.k% Int t*.1 W10 point (2)A.Fast_ B.void C.pbl D. Fast+Big abs fabs beep (3)A.xy_ B.longdouble C.*p D.CHAR 变量1 signed history Float 7.()是构成C语言的基本单位。 A.函数 B.过程 C.子程序 D.子例程 8.若有说明:char s1='\067';char s2="1";char s3='1';则s1中(1),s2中(2),s3中(3)。

(1).A.包含3个字符 B.包含2个字符 C.包含1个字符 D.无定值,说明不合法 (2).A.包含1个字符 B.包含2个字符 C.包含3个字符 D.无定值,说明不合法 (3).A.包含1个字符 B.包含2个字符 C.包含3个字符 D.无定值,说明不合法 9.若x为int型变量,则执行以下语句后,x的值为 x=6; x+=x-=x*x A.36 B.-60 C.60 D.-24 10.在C语言中,char 型数据在内存中是以()形式存储的。 A.原码 B.补码 C.ASCII码 D.反码 11.以下运算符中优先级最低的算符为(),优先级最高的为()。 A.&& B.& C.|= D.|| E.?: F.!= 12.若有运算符>、*=、<<、%、sizeof,则它们按优先级(由低至高)的正确排列顺序为 A.*= << > % sizeof B.<< *= > % sizeof C.*= > << sizeof % D.*= > << % sizeof 13.若有以下类型说明语句 char w; int x; float y; double z; 则表达式w*x+z-y 的结果是()类型。 A.float B.char C.int D.double 14.若w,x,y,z 均为int 型变量,则执行下面的语句后, w=(1), x=(2), y=(3), z=(4)。 w=5; x=4; y=w++*w++*w++; z=--x*=--x*--x;

《C语言程序设计》课后习题答案

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6#include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

2.1什么是算法16 2.2简单的算法举例17 2.3算法的特性21 2.4怎样表示一个算法22 2.4.1用自然语言表示算法22 2.4.2用流程图表示算法22 2.4.3三种基本结构和改进的流程图26 2.4.4用N S流程图表示算法28 2.4.5用伪代码表示算法31 2.4.6用计算机语言表示算法32 2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67

C语言考试题库及答案复习整理

C 语言理论上机考试选择题部分(共200题) 1、下面程序的输出是___D______ #include void main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b 2、在下列选项中,不正确的赋值语句是__D______. A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1; 3、下面合法的C 语言字符常量是______A____. A) '\t' B) "A" C) 65 D) A 4、表达式: 10!=9的值是 ________D____. A) true B) 非零值 C) 0 D) 1 5、C 语言提供的合法的数据类型关键字是_____B____. A) Double B) short C) integer D) Char 6、字符(char)型数据在微机内存中的存储形式是__D__. A) 反码 B) 补码 C) EBCDIC 码 D) ASCII 码 7、C 语言程序的基本单位是_____C______. A) 程序行 B) 语句 C) 函数 D) 字符 8、设 int a=12,则执行完语句

a+=a-=a*a 后,a 的值是____D____ A) 552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是____B__. #include void main() {int a; printf("%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 10、下面程序的输出是____B______. #include void main() {int x=023; printf("%d\n",--x); } A) 17 B) 18 C) 23 D) 24 11、下面程序的输出的是_____C____. #include void main() {int x=10,y=3; printf("%d\n",y=x/y); } A) 0 B) 1 C) 3 D) 不确定的值 12、已知字母A 的ASCII 码为十进制的65,下面程序的输出是______A_____. #include void main() {char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); } A) 67,D B) B,C C) C,D D) 不确定的值 13、若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为____D__. A) a<>0 B) !a C) a=0 D) a

C语言课后习题答案(最终)

第0章习题 1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数: (1)128 (2)511 (3)1024 (4)65535 (5)1048575 答: (1)10000000、200、80 (2)111111111、777、1FF (3)10000000000、2000、400 (4)1111111111111111、177777、FFFF (5)11111111111111111111、3777777、FFFFF 2. 将下列二进制数转化为十进制数和十六进制数: (1)1100110101B (2)101101.1011B 答: (1)821、335 (2)45.6875、2D.B 3. 写出下列数的原码、反码、补码:15、-20、-27/32 答: (1)00001111、00000000、00001111 (2)10010100、11101011、11101100 (3)1.1101100、1.0010011、1.0010100 4. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少? 答: 0~65535、-128~127、-32768~32767 5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。 答: 结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。 如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么? 答:

大学C语言考试题库及答案

精选考试类应用文档,如果您需要使用本文档,请点击下载,另外祝您生活愉快,工作顺利,万事如意! 大学C语言考试题库及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题库吧。加油! 一单项选择题库 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’ ’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是(B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C )。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。

C语言课后习题答案(完整版)-第四版-_谭浩强

C语言课后习题答案-第四版- 谭浩强(1-7) 第一章 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } #include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; } #include #include int main()

{float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次printf("p1=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5方案得到的本息和 return 0; } #include #include int main() {double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次printf("p1=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5方案得到的本息和

(完整版)C语言程序设计选择题库及答案

单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查对C语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题, 应该通过上机实验来检验。 【1.1】以下不正确的C语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。 A) #define B) _123 C) %d D) \n 【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 ??? A) print B) i\am C) Pxq D) str_l ??? _3d one_half My->book Cpp ??? oodb start$it line# pow ??? aBc 3pai His.age while

【1.4】下面各选项组中,均是C语言关键字的组是。 A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type 【1.5】下列不属于C语言关键字的是。A) default B) register C) enum D) external 【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。 A) 程序文件的开始B) 程序文件的最后 C) 它所调用的函数的前面D) 程序文件的任何位置 【1.7】下列关于C语言的叙述错误的是____ A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义

最新c语言课后习题答案汇总

c语言课后习题答案

第二章习题 2.什么叫做结构化算法?为什么要提倡结构化算法? 答:结构化算法是由一些基本结构顺序组成的。在基本结构之间不存在向前或向后的跳转,流程的转移只存在于一个基本的结构范围内。一个非结构化的算法可以用一个等价的结构化算法代替,其功能不变。 跟结构化算法比较起来,非结构化算法有以下缺点: 流程不受限制的随意转来转去,使流程图豪无规律使人在阅读的时候难以理解算法的逻辑.难以阅读,也难以修改,从而使算法的可靠性和可维护性难以保证。 4. 第三章习题 1.#include #include void main() { unsigned int n;

float p,p1,r=0.09; scanf("%u",&n); p=pow(1+r,n); p1=(p-1)*100; printf("%5.2f%%\n",p1); } 运行结果:输入,回车,见结果: 2.#include #include int main() { int bj=1000; float r1,r2,r3,r5,r0,lx1,lx2,lx3,lx4,lx5; r1=0.0414; r2=0.0468; r3=0.0540; r5=0.0585; r0=0.0072; lx1=bj*r5; lx2=bj*(1+r2)*r3; lx3=bj*(1+r3)*r2; lx4=bj*pow(1+r1,5); lx5=bj*r0*5; printf("lx1=%f lx2=%f lx3=%f lx4=%f lx=5%f\n",lx1,lx2,lx3,lx4,lx5); return 0; } 运行结果: 3.#include #include int main() { long d,p; d=300000; p=6000; double m,r=0.01; m=log(p/(p-d*r))/log(1+r); printf("%4.2f",m); return 0;

(完整版)C语言选择题(附答案)

第一单元C语言概述 一、选择题 1、C语言中主函数的个数为(A)个。 A)1 B)2 C)无穷个D)任意个 2、以下关于C语言描述错误的是(D)。 A)一个C程序总是从main函数开始执行T B)每个语句和数据声明的最后必须有一个分号T C)C语言的注释符是以“/*”开始并以“*/”结束的T D)一个C程序可以包含多个main函数F 3、C 语言源程序文件后缀为(C )。 A).EXE B).OBJ C).C D).ASM 4、C语言是由(C )组成的。 A)子程序B)主程序与子程序C)函数D)过程 5、C语言属于(B )语言 A)机器语言B)汇编语言C)高级语言D)面向对象语言 第二单元C语言基础 一、选择题 1、C语言中普通整型变量int在内存中占(B )字节。 A)1 B)2 C)3 D)4 2、下列不是C语言基本数据类型的是(A )。 A)字符型B) 整型 C) 浮点型D) 结构体 3、有关自增、自减运算,以下只有(D )是正确的。 A) ---f B) ++78 C) a—b++ D) d++ 4、已知A=7.5,B=2,C=3.6,表达式(A>B && C>A) || (AB)的值是(A )。 A)0 B)10 C)1 D)5

5、若有x=1,y=2,z=3,则表达式(x=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 7、判断整型变量digit是否为数字的正确表达式是(C )。 A) ‘0’<=ch<=‘9’B) (ch>=‘0’)&(ch<=‘9’) C) (ch>=‘0’)&&(ch<=‘9’) D) (‘0’<= ch)AND(‘9’>= ch) 8、一个C程序的执行是从(A )。 A)本程序的main函数开始,到main函数结柬 B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序的main函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序main函数结束 9、在以下标识符中,合法的是(C ) A)if B)0xy C)_xy D)case 10、C语言中各种类型的数据其实决定了占用内存的字节数。float占(C )。 A)一字节B)二字节C)四字节D)八字节 11、下列各选项中,(A )是有效的标识符。 A)ab B)3day C)day-3 D)#abc 12、以下叙述正确的是(C ) A) 在C程序中,每行只能写一条语句 B) 若a是实型变量,C程序中不允许a=10这种赋值。 C) 在C程序中,%是只能用于整数运算的运算符 D) 在C程序中,无论是整数还是实数,没有什么区别 13、有输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,则正确的数据输入方式是( B )。 A)132↙B)1,3,2↙ C)a=1 b=3 c=2↙D)a=1,b=3,c=2↙ 14、设整型变量a为5,使b不为2的表达式是( C )。 A)b = a/2 B)b = 6-(--a) C)b=a%2 D)b=a>3?2:1

C语言选择题(含答案)

C语言选择题(含答案) 选择题 1.以下叙述正确的是_____。 A) 在C程序中,main函数必须位于程序的最前面。 B) C语言本身没有输入输出语句。 C) C程序的每行只能写一条语句。 D) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 2.下面四个选项中,均是不合法的用户标识符的选项是。 A) A B) float C) b-a D) _123 P_0 1a0 goto temp do _A int INT 3、下列四个选项中都是合法的转义字符的 A) ‘\’’‘\\’‘\n’B) ‘\’‘\017’‘\”’ C) ‘\018’‘\f’‘xab’D) ‘\\0’‘\101’‘x1f’ 4、设所有变量均为整型,则表达式z=(a=2,b=5,b++,a+b)的值是: A)7 B)8 C)6 D)2 5、若有代数式,则不正确的C语言表达式是: A) a/b/c*e*3 B) 3*a*e/b/c C) 3*a*e/b*c D) a*e/c/b*3 6、若希望当A的值为奇数时,表达式的值为”真”, A的值为偶数时,表达式的值为”假”。则以 下不能满足要求的表达式是_________。 A) A%2==1 B) !(A%2==0) C) !(A%2) D) A%2 7、以下程序的运行结果是 : main() { int m=6;

if(m++> 6) printf(" %d\n",m); e1se printf("%d\n",--m ); } A)4 B)5 C) 7 D) 6 8、当a=1,b=3,c=5,d=4,执行完下面一段程序后x 的值是 : if(a正确的输出结果为 main() { int x,y,z scanf("%d%d%d",&x,&y,&z ); printf(“x+y+z=%d\n” ,x+y+z);。 } A)x+y+z=48 B)x+y+z=35 C)x+y+z=35 D)不确定值 10、已知各变量的类型说明如下 int k,a,b; unsigned long w= 5; double x=1.42; 则以下不符合C语言语法的表达式是 : A) x%(-3) B) w+=-2

C语言课后习题答案

第1章C语言概述 一、选择题 答案: 1.A 2.B 3.C 4.C 5.D 6.B 7.D 8.B 二、填空题 答案: 1.函数2.目标3.编译程序4.分号 第2章数据类型、运算符和表达式 一、选择题 答案: 1.B 2.D 3.D 4.B 5.D 6.C 7.C 8.B 9.A 10.D 11.B 12.B 13.D 14.D 15.A 16.C 17.B 18.D 19.A 20.C 二、填空题 答案: 1.2 2.6,4,2 3.18 4.5 5.double或双精度 6.30 7.4,2 8.4 第3章顺序结构 一、选择题 答案: 1.C 2.C 3.C 4.A 5.A 6.A 7.D 8.D 9.C 10.D 二、填空题 答案: 1.scanf printf 2.顺序、选择、循环3.1 4.3 5.9,10 6.10,20 7.213 8.空格、Tab键、回车键 第4章选择结构 一、选择题 答案: 1.B 2.D 3.D 4.B 5.B 6.C 7.C 8.B 9.B 二、程序改错题 1.输入两个实数,在fun()函数中按数值由小到大输出它们。(保留2位小数)

答案: =======(答案1)======= float t; =======(答案2)======= if(a>b) =======(答案3)======= printf("%5.2f, %5.2f\n",a,b); 2.编写一个程序计算某年某月有几天。(注意要区分闰年) 答案: =======(答案1)======= switch(mm) =======(答案2)======= break; =======(答案3)======= default : 三、程序填空题 1.功能:输出a、b、c三个变量中的最小值。 答案: =======(答案1)======= &c =======(答案2)======= c:t1 四、程序设计题 1.功能:对任意输入的x,用下式计算并输出y 的值。说明:因为关于函数调用的知识在第7章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。 答案: int m; if(n<10) m=5; else if(n==10) m=0; else m=-5; return m; 或 int m; if(n>=10) if(n>10) m=-5; else m=0; else m=5; return m; 第5章循环结构 一、选择题

C语言题库及答案(选择题)

C语言题库(选择题) 1.C语言源程序的基本单位是()。 A.过程 B.函数 C.子程序 D.标识符 2.下列字符序列中,可用作C标识符的一组字符序列是()。 A. S.b,sum,average,_above B. class,day,lotus_1,2day C. #md,&12x,month,student_n! D. D56,r_1_2,name,_st_1 3.以下标识符中,不能作为合法的C用户定义标识符的是()。 A.a3_b3 B.void C._123 D.IF 4.以下数据中,不正确的数值或字符常量是()。 A.0 B.5L C.o13 D.9861 5.以下数值中,不正确的八进制数或十六进制数是()。 A.0x16 B.16 C.-16 D.0xaaaa 6.以下的选择中,正确的赋值语句是()。 A.a=1,b=2 B.j++ C.a=b=5; D.y=int(x) 7.以下运算符中,优先级最高的运算符是()。 A.?: B.++ C.&& D., 8.在C语言中,能代表逻辑值“真”的是()。 A.TRUE B.大于0的数 C.非0整数 D.非0的数 9.下列变量说明语句中,正确的是()。 A.char:a b c; B.char a;b;c; C.int x;z; D.int x,z; 10.下列字符序列中,不可用作C语言标识符的是()。 A.b70 B.#ab C.symbol D.a_1 11.以下不正确的叙述是()。 A.在C程序中所用的变量必须先定义后使用。 B.程序中,APH和aph是两个不同的变量。 C.若a和b类型相同,在执行了赋值语句a=b;后b中的值将放入a中,b中的值不变。 D.当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值。 12.以下标识符中,不能作为合法的C用户定义标识符的是()。 A.For B.Printf C.WORD D.sizeof 13.以下标识符中,不能作为合法的C用户定义标识符的是()。 A.answer B.to C.signed D._if 14.以下标识符中,不能作为合法的C用户定义标识符的是()。 A.putchar B._double C._123 D.INT 15.以下数据中,不正确的数值或字符常量是()。 A.8.9e1.2 B.10 C.0xff00 D.82.5 16.以下数据中,不正确的数值或字符常量是()。 A.c B.66 C.0xaa D.50 17.以下运算符中,优先级最高的运算符是()。

C语言课后习题标准答案

C语言课后习题标准答案 第1章C语言概述 一、简答题 1.(1)语言简洁、紧凑,使用方便、灵活;(2)运算符丰富;(3)具有丰富的数据类型;(4)具有结构化的控制语句;(5)语法限制不太严格,程序设计自由度大;(6)C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接访问硬件;(7)生成目标代码质量高,程序执行效率高;(8)用C语言写的程序可移植性好,基本上不作修改就能用于各种型号的计算机和各种操作系统。 2.顺序结构,分支结构,循环结构 3.所谓算法就是为解决一个问题而采取的方法和步骤。 算法的特性:有穷性、确定性、输入、输出、可行性。 表示算法的方式:(1)用自然语言表示;(2)用流程图表示;(3)用N—S流程图表示; (4)用伪代码表示;(5)用计算机语言表示。 二、算法 1.瓶子A里盛有醋 瓶子B里盛有酱油 那一个空瓶C 将A中的醋倒入C 将B中的酱油倒入A

将C中的醋倒入B 2.输入一个数放在a中max=a 以下步骤重复9次: 输入一个数放在a中 如果a>max,max=b 打印max的值 3.如果??a<b temp=a ?a=b ??b=temp 如果c>a ?temp1=a ??temp2=b a=c ?b=temp1 ?c=temp2 否则 ?如果?c>b ?temp=b ?b=c ?c=temp

打印a,b,c的值 4.i=1 sum=0 以下程序循环100遍: sum=sum+i ?i=i+1 打印sum的值 5.如果(n除以3的余数为0并且n除以5的余数为0)n能够同时被3和5整除 否则 ?n不能够同时被3和5整除 6.i=101 以下语句循环50遍: ?j=2 ?flag=1 ?当j<(i除以2的整数部分)时循环以下语句: ??如果i除以j的余数为零 ???flag=0 ???退出该循环 如果flag=1 ???打印i的值 ?i=i+1

C语言试题库(带详细讲解答案)

一单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)

6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D 中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3) 9.C语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A)2.5 B)2 C)1 D)3 详见教材P52~53. %为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1;5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1; /为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=2 11.如果int a=3,b=4;则条件表达式"a

C语言程序设计-------阅读程序题库及答案

阅读程序题 【2.1】以下程序的输出结果是。main(D ) { float a; a=1/100000000; printf("%g",a); } A) 0.00000e+00 B) 0.0 C) 1.00000e-07 D) 0 【2.2】下面程序的输出结果是B____。 #include main( ) { int x=10; { int x=20; printf ("%d,", x); } printf("%d\n", x); } A) 10,20 B) 20,10 C) 10,10 D) 20,20

【2.3】以下程序的输出结果是___B_。 main() { unsigned int n; int i=-521; n=i; printf("n=%u\n",n); }//变量i中的负号传送给变量n后,因n是无符号数,已不作为负号处理。 A) n=-521 B) n=521 C) n=65015 D) n=102170103 【2.4】以下程序的输出结果是。main(D ) { int x=10, y=10;printf("%d %d\n", x――, ――y); } A) 10 10 B) 9 9 C) 9 10 D) 10 9 【2.5】以下程序的输出结果是___B。 main() { int n=1; printf("%d %d %d\n",n,n++,n--); } // C语言在执行printf()时,对函数中的表达式表列的

处理顺序是从后向前,即先处理n- -,再处理n++,最后处理n, A) 1 1 1 B) 1 0 1 C) 1 1 0 D) 1 2 1 【2.6】以下程序的输出结果是____。 main() { int x=0x02ff,y=0x0ff00; printf("%d\n",(x&y)>>4|0x005f); } A) 127 B) 255 C) 128 D) 1 【2.7】以下程序的输出结果是____。 main() { int a=1; char c='a'; float f=2.0; printf("%d\n",(!(a==0),f!=0&&c=='A')); } A) 0 B) 1 【2.8】下面程序的输出结果是____。

《C语言程序设计》课后习题参考答案

高等院校计算机基础教育规划教材《C++程序设计》课后习题参考答案 ――武汉大学出版社 习题1参考答案 一、选择题 1. A 2. D 二、填空题 1. BASIC、FORTRAN、AL_GOL60和COBOL 2. 8 3. 关键字 4. 编辑、编译、链接和运行 三、简答题 1.答: (1)C语言具有结构化的控制语句。C语言提供了结构化程序所必需的基本控制语句,实现了对逻辑流的有效控制。 (2)C语言具有丰富的数据结构类型。C语言除提供整型、实型、字符型等基本数据类型外,还提供了用基本数据类型构造出的各种复杂的数据结构,如数组、结构、联合等。C语言还提供了与地址密切相关的指针类型。此外,用户还可以根据需要自定义数据类型。(3)C语言具有丰富的运算符。C语言提供了多达34种运算符,丰富的数据类型与丰富的运算符相结合,使C语言的表达力更具灵活性,同时也提高了执行效率。 (4)C语言简洁、紧凑,使用方便、灵活,程序书写自由,有9种控制语句。 (5)C语言既具有高级语言的功能,又具有低级语言的许多功能,通常被称为中级计算机语言。它既是成功的系统描述语言,又是通用的程序设计语言。 (6)C语言与汇编语言相比,可移植性好。 (7)功能强大。C语言具有低级语言的一些功能,所以,生成目标代码质量高,程序执行效率高。现在许多系统软件都用C语言来描述,可以大大提高了编程效率。 2.答:运行一个C语言程序,一般需要经过如下几个步骤:①上机输入并编辑源程序;②编译源程序;③与库函数连接;④生成可执行目标程序;⑤运行目标程序。 3.答: (1)操作系统的设计与实现。C语言是一种应用非常广泛的结构化高级程序设计语言,既适合编写应用软件,又适合编写系统软件。

C语言_基本选择题和参考答案

计算机程序设计基础(C语言) 单项选择练习题 一、基本概念 1. C语言程序是由 C 构成的。 A)一些可执行语言 B)main函数 C)函数 D)包含文件中的第一个函数 2.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 3.C语言程序从 C开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数4.C语言程序从main()函数开始执行,所以这个函数要写在_D___。 A) 程序文件的开始 B) 程序文件的最后 C) 它所调用的函数的前面 D) 程序文件的任何位置 5、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 6. 下列方法中错误的是(D)。 A.主函数可以分为两个部分:主函数说明部分和主函数体。 B.主函数可以调用任何非主函数的其它函数。 C.任何非主函数可以调用其它任何非主函数。 D.程序可以从任何非主函数开始执行。 7. 下列说法错误的是:(B) A.C程序运行步骤是编辑、编译、连接、执行。

B.C语言的变量名必须用小写,常量用大写。 C.C语言的三种基本结构是顺序、选择、循环。 D. C程序一定由函数构成的。 8.下列关于C语言的说法错误的是( B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 9. 系统默认的C语言源程序扩展名为.C,需经过 C 之后,生 成.exe文件,才能运行? A) 编辑?编译 B )编辑?连接 C) 编译?连接 D) 编辑?改错 10.下列说法中正确的是(B)。 A.由于C源程序是高级语言程序,因此一定要在TC软件中输入。 B.由于C源程序是由字符流组成的,因此可以作为文本文件在任何 文本编辑的软件中输入。 C.由于C程序是高级语言程序,因此输入后即可执行。 D.由于C程序是高级语言程序,因此它是由命令组成的。 二、数据类型、运算符与表达式 1. 不是C语言提供的合法关键字是(B)。 A.switch B.cher C.case D.default 2.C语言提供的合法关键字是(D)。 A.next B.string C.do case D.default 3.下列不属于C语言中关键字的是 B A)long B)print C)default D)typedef

相关文档 最新文档