C程序设计习题解答

C程序设计习题解答
C程序设计习题解答

一、选择题(蓝色加粗为正确选项)

在C语言中,合法的字符常量是()。

A. '字'

B. "A"

C. "ABC"

D. '\x41'

在C语言中,用户能使用的合法标识符是()。

A. 姓名

B. _xyz

C. 5i

D. for

在C语言中,不合法的实型常量是()。

A. -0.123

B. -.123

C. -1.23e-1

D. -123e-3.0

C语言的下列运算符中,优先级最高的运算符是()。

A. ++

B. +=

C. ||

D. !=

设有说明语句int k,i=5,j=10;,则表达式k=(++i)*(j--)的值是()。

A. 50

B. 60

C. 45

D. 55

设有说明语句int i,j;,则表达式i>=j||i

A. 视i、j的具体值而定

B. FALSE

C. TRUE

D. 1

已知'A'的ASCII码的十进制值为65,'0'的ASCII码的十进制值为48,则以下程序运行结果是()。

main()

{ char ch1,ch2;

ch1='A'+'5'-'3';

ch2='A'+'6'-'3';

printf("%d,%c\n",ch1,ch2);

}

A. 67,D

B. C,D

C. C,68

D. 67,68

设有语句int x=2,y=3;,则表达式x=(y==3)的值是()。

A. 0

B. 1

C. 2

D. 3

以下程序的运行结果是()。

main()

{ unsigned a = 0x3ef, b;

b = a << 2;

printf("%x,%x\n", a, b);

}

A. 3ef,fb

B. 3ef,fbc

C. fbc,3ef

D. fbc,fbc

下列语句中,符合C语言语法的赋值语句是()。

A. a=7+b+c=a+7;

B. a=7+b++=a+7;

C. a=7+b,b++,a+7;

D. a=7=b,c=a+7;

为表示x≥y≥z,须用的C语言表达式为()。

A. (x>=y)&&(y>=z)

B. (x>=y)AND(y>=x)

C. x>=y>=z

D. (x>=y)&(y>=z)

设int a,b;,用语句scanf('%d%d",&b); 输入a、b值时,不能作为输入数据分隔符的是()。

A. 空格

B. ,

C. 回车

D. [Tab]

以下程序运行时,若从键盘输入5,则输出结果是()。

main()

{ int a;

scanf("%d",&a);

if(a++>5) printf("%d\n", a);

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

}

A. 7

B. 4

C. 5

D. 6

以下程序的运行结果是()。

main()

{ int a, b, c;

a =

b =

c = 1;

if ( a++ || ++b ) c++;

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

}

A. 2, 1, 2

B. 1, 2, 1

C. 2, 2, 2

D. 2, 2, 1

以下程序的运行结果是()。

main()

{ int i=3,j=2,k;

k=i+j;

{

int k=8;

if(i==3) printf("%2d",k);

else printf("%2d",j);

}

printf("%2d%2d\n",i,k);

}

A. 8 3 5

B. 8 3 8

C. 3 8 3

D. 5 8 3

有以下程序:

main()

{ int c;

while((c=getchar())!= '\n')

{ switch(c-'2')

{ case 0 :

case 1 : putchar(c+4);

case 2 : putchar(c+4); break;

case 3 : putchar(c+3);

default: putchar(c+2); break;

}

}

printf("\n");

}

当输入:247<回车>,程序的输出结果是()。

A. 689

B. 6689

C. 66778

D. 66887以下程序的运行结果是()。

main()

{ int a=1,b=0;

switch(a)

{

case 1:

switch(b)

{

case 0: printf("0000\n");

case 1: printf("1111\n");break;

}

case 2:printf("2222\n");break;

}

}

A. 0000

1111

B. 0000

1111

2222

C. 0000

2222

D. 1111

2222

以下程序的运行结果是()。

void main()

{ int a=1;

switch(a)

{

case 1: printf("aaaa\n");

case 2: printf("bbbb\n"); break;

default: printf("cccc\n");

}

}

A. aaaa

B. aaaa

bbbb

cccc

C. aaaa

bbbb

D. aaaa

cccc

以下程序运行后,a的值是()。

main()

{ int a,b;

for(a=1,b=1;a<=100;a++)

{

if(b>=20) break;

if(b%3==1) { b+=3; continue; }

b-=5;

}

}

A. 101

B. 100

C. 8

D. 7以下程序段的运行结果是()。

main()

{ int i,j;

i=10;

j=20;

for(;j>=0;j-=20)

{

if(i=j) printf("Good! ");

else printf("Not good!");

}

}

A. Good!Good!

B. Not good!

C. Good!

D. Good! Not good!以下程序的运行结果是()。

main()

{ int a,b,c,n=13;

printf(" A B C\n");

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

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

for(c=b;c<=n;c++)

if(a*a==b*b+c*c)

printf("%3d%3d%3d\n",a,b,c);

}

A. A B C

5 3 4

10 6 8

13 5 12

B. A B C

3 5 4

6 10 8

5 13 12

C. A B C

4 5 3

8 10 6

12 13 5

D. A B C

5 4 3

10 8 6

13 12 5

以下程序段的运行结果是()。

int x=3;

do{

printf("%3d, ", x-=2 );

}while(!(--x));

A. 1

B. 30

C. 死循环

D. 1, -2

设E为表达式,以下与do …while(E);不等价的语句是()。

A. do … while(!E==0);

B. do … while(E>0||E<0);

C. do … while(E==0);

D. do … while(E!=0);

以下程序的运行结果是()。

main()

{ int i,s;

i=0;

s=1;

do{

s/=s+1;

i++;

}while(i<=10);

printf("%2d%2d\n",i,s);

}

A. 10 2

B. 11 2

C. 10 0

D. 11 0

下列程序段中,非死循环的是()。

A. int i=100;

while(1)

{ i=i%100+1;

if(i>=100) break;

}

B. int k=0;

do{

++k;

}while(k>=0);

C. int s=10;

while(++s%2+s%2) s++;

D. for(;;)

循环语句循环体中执行continue语句,其作用是()。

A. 立即终止程序运行

B. 继续执行continue语句之后的循环体各语句

C. 结束本次循环

D. 结束本次循环,跳出循环

下列do...while循环的循环次数是()。

int i=5;

do{

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

i--;

}while(i!=0)

A. 0

B. 2

C. 5

D. 死循环

设已定义char s[]="\"Name\\Address\023\n";,则字符串中字符个数是()。

A. 19

B. 15

C. 18

D. 14

已定义char x[8]; int i;,为了给该数组赋值,下列语句正确的是()。

A. x[8]="Turbo C";

B. x="Turbo C";

C. x[]="Turbo C";

D. for(i=0;i<7;i++) x[i]=getchar();

设int a[][4]={0,0};,则下列描述错误的是()。

A. 数组a的每个元素的值为0

B. 二维数组a的第一维大小为1

C. 数组a有4个元素

D. 只有元素a[0][0]和a[0][1]的值为0,其余元素的值不确定

以下程序段的运行结果是()。

main()

{ int i=4,j;

j=i;

pic(i+2*j-2,'*');

putchar('\n');

for(j-=2;j>=0;j--)

{ pic(3-j, ' ');

pic(i+2*j, '*');

putchar('\n');

}

}

pic(int len,char C.

{ int k;

for(k=1;k<=len;k++) putchar(C.;

}

A. *

***

*****

*******

B. **********

**********

**********

**********

C. ****

******

********

**********

D. **********

********

******

****

以下程序运行结果是()。

main()

{ char a[][5]={ "ABCD","1234","abcd","5678","EFGH"};

int i;

for(i=0;i<3;i++) printf("%s",a[i]);

}

A. A1a

B. ABCD1234abcd

C. ABC

D. ABCD1234abcd5678EFGH 以下程序的运行结果是()。

main()

{ int array[4][4];

int i,j;

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

for(j=0;j<4;j++) array[i][j]=i+j;

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

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

if(i==j||i+j==3) array[0][j]=0;

for(j=0;j<4;j++) printf("%2d",array[0][j]);

printf("\n");

}

A. 2 0 0 5

B. 1 0 0 4

C. 0 1 2 0

D. 0 4 5 0

设有下列语句,则()是对a数组元素的不正确引用,其中0≤i<10。

int a[1={0,1,2,3,4,5,6,7,8,9}, *p=a;

A. a[p-a]

B. *(&a[i])

C. p[i]

D. *(*(a+i))

若有以下程序:

main

{ char ch[]="I am student! ", *p;

p=ch;

printf("%x\n",p);

printf("%x\n",p+9);

}

其中第一个printf()运行结果是ffd6,则第二个printf()运行结果是()。

A. ffdf

B. ffe8

C. ffd6

D. ffcf

以下程序的运行结果是()。

main()

{ int i;

char aa[][3]={'a','b','c','d','e','f'};

char (*p)[3]=aa;

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

if(i==0) aa[i][i]+=**(p++);

printf("%c\n",**p);

}

A. a

B. b

C. c

D. d

设有下列语句:

char str1[]="string",str2[8],*str3,*str4="string";

则()是对库函数strcpy的不正确调用。此函数用来复制字符串。A. strcpy(str3,"HELLO3"); B. strcpy(str2,"HELLO2");

C. strcpy(str1,"HELLO1");

D. strcpy(str4,"HELLO4");

若有以下定义和语句,且0≤i<4,0≤j<3,则不能访问a数组中的元素的是()。int i,(*p)[3];

int a[][3]={1,2,3,4,5,6,7,8,9,10,11,12};

p = a;

A. *(*(a+i)+j)

B. p[i][j]

C. (*(p+i))[j]

D. p[i]+j

以下关于指针概念的叙述中,错误的是()。

A. 一个指针变量只能指向同一类型的变量

B. 一个变量的地址称为该变量的指针

C. 两个同类型的指针变量可以作加减运算

D. 任何指针变量都可以与空指针NULL进行比较

以下程序的运行结果是()。

fun3(int x)

{ static int a=3;

a+=x;

return a;

}

main()

{ int k=2,m=1,n;

n=fun3(k);

n=fun3(m);

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

}

A. 3

B. 4

C. 6

D. 9

以下程序运行后,输出的结果是()。

func(int a)

{ static int m=0;

m += a;

return( m );

}

main()

{ int k=4, p;

p=func(k); printf("%d,", p);

p=func(k); printf("%d\n", p);

}

A. 4,4

B. 0,4

C. 4,8

D. 8,8

以下程序的运行结果是()。

age(n)

int n;

{ int c;

if(n==1) c=10;

else

if(n%2==0) c=age(n-1)+2;

else c=age(n-1)+3;

return(c);

}

main()

{ printf("%d\n",age(5)); }

A. 18

B. 20

C. 10

D. 21

以下程序的运行结果是()。

void ast (int x,int y,int *cp,int *dp)

{ *cp=x+y; *dp=x-y;

}

main()

{ int a=4,b=3,c,d;

ast(a,b,&c,&d);

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

}

A. 7,1

B. 1,7

C. 7,-1

D. c、d未赋值,编译出错以下程序的输出结果是()。

swap(int *p, int *q)

{ int t;

t=*p; *p=*q; *q=t;

}

main()

{ int a=10,b=20;

swap(&a, &b);

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

}

A. 10,10

B. 20,20

C. 10,20

D. 20,10

以下程序的运行结果是()。

main()

{ void change_p();

int *p,a[]={1,4,7,10};

p=&a[1];

change_p(p);

printf("%d\n",*p);

}

void change_p(int *pi)

{ *pi +=2;

pi +=2;

*pi +=2;

}

A. 7

B. 8

C. 5

D. 6

以下程序段的运行结果是()。

enum weekday{ aa,bb=2,cc,dd,ee }week=ee;

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

A. ee

B. 5

C. 2

D. 4

以下对枚举类型进行定义,不正确的是()。

A. enum b{1, 2, 3};

B. enum a{A, B, C};

C. enum c{D=3, E, F};

D. enum d{X=0, Y=5, Z=9};

在C程序中,设一表达式含有int、long、unsigned和char类型的常数和变量,则表达式的最后运算结果是()。

A. int

B. char

C. unsigned

D. long

若定义如下结构,则能打印出字母M的语句是()。

struct person{

char name[9];

int age;

};

struct person class[10]={{"Wu",20}, {"Liu",23}, {"Ma",21}, {"zhang",22}};

A. printf("%c\n",class[3].name);

B. printf("%c\n",class[2].name[1]);

C. printf("%c\n",class[2].name[0]);

D. printf("%c\n",class[3].name[1]);

以下程序的运行结果是()。

main()

{ union u_type

{ int i;

double x;

float f;

};

struct str_type

{ char str[10];

union u_type u[10];

};

printf("%d\n", sizeof(struct str_type));

}

A. 81

B. 90

C. 150

D. 120

以下程序的输出结果是()。

main()

{ printf( "%d\n", fac(5) );

}

fac(int n)

{ int s;

if(n==1) return 1;

else return n*fac(n-1);

}

A. 120

B. 60

C. 6

D. 1

以下程序的运行结果是()。

main()

{ char ch[7] = "12xy89";

int i, s=0;

for(i=0; ch[i]; i++)

if(ch[i]>='0' && ch[i]<='9') s=10*s + ch[i] - '0';

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

}

A. 12

B. xy

C. 12xy89

D. 1289

以下程序运行后,输出的结果是()。

fun(char *w)

{ char t, *s1, *s2;

for(s1=w, s2=w+strlen(s1)-1; s1

{ t = *s1;

*s1 = *s2;

*s2 = t;

}

}

main()

{ char *p="12345";

fun(p);

puts(p);

}

A. 12345

B. 54321

C. 15115

D. 51551以下程序中的循环执行了()次。

#define N 2

#define M N+1

#define NUM (M+1)*M/2

main()

{ int i,n=0;

for(i=0;i

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

}

A. 5

B. 6

C. 8

D. 9

以下程序的输出结果是()。

#define SUM(y) 1+y

main()

{ int x=2;

printf("%d\n", SUM(5)*x );

}

A. 10

B. 11

C. 12

D. 15

以下程序的运行结果是()。

#define M(x,y) x*y

main()

{ int a=3,b=2,s1,s2,f12();

s1=M(a+b,a-b);

s2=M(a-b,a+b);

printf("%d,%d,%d,%d\n",s1,s2,f12(a+b,a-b),f12(a-b,a+b));

}

f12(int x,int y)

{ return(x*y); }

A. 7,-1,5,5

B. 5,5,7,-1

C. 5,5,5,5

D. 7,-1,7,-1

若有以下定义:

struct link

{ int data;

struct link *next;

} *p;

并已建立如下图所示的链表结构:

p

指针p指向该单向链表的第一个结点,要输出链表所有结点的数据成员data,以下循环语句正确的是()。

A) for(;p!=NULL;p++) printf("%d,",p->data);

B) for(;!p;p=p->next) printf("%d,",(*p).data);

C) while(p)

{ printf("%d,",(*p).data);

p=p->next;

}

D) while(p!=NUll)

{ printf("%d,",p->data);

p++;

}

若有以下定义:

struct link

{ int data;

struct link *next;

} a,b,c, *head, *p;

其中,指针head 指向变量a ,p 指向变量c ,a.next 指向变量b ,链表结构如下图所示: a b c

data next

则能够把c 插入到a 和b 之间并形成新链表的程序段是( )。

A) a.next = c; c.next = b;

B) head.next = p; p.next = head.next;

C) head->next = &c; p->next = head->next;

D ) (*head).next = p; (*p).next = &b;

若有以下定义:

struct link

{ int data;

struct link *next;

} *head, *p;

并已建立如下图所示的链表结构:

p

head

则能保留链表其它结点,而删除p 所指向结点的程序段是( )。

A ) head->next = p->next; free(p);

B) head->next = p; p->next = head->next; free(p);

C) free(p); head->next = p; p->next = head->next;

D) free(p); head->next = p->next;

以下程序的功能是( )。

#include

main()

{ FILE *fp;

long int n;

fp=fopen("wj.txt","rb");

fseek(fp,0,SEEK_END.;

n=ftell(fp);

fclose(fp);

printf("%ld",n);

}

A. 计算文件wj.txt的起始地址

B. 计算文件wj.txt的终止地址

C. 计算文件wj.txt的长度

D. 将文件指针定位到文件末尾

标准函数fgets(s, n, f)的功能是()。

A. 从文件f中读取长度为n的字符串存入指针s所指的内存

B. 从文件f中读取长度不超过n-1的字符串存入指针s所指的内存

C. 从文件f中读取n个字符串存入指针s所指的内存

D. 从文件f中读取长度为n-1的字符串存入指针s所指的内存

以下程序的可执行文件名是file.exe。

main(argc,argv)

int argc;

char *argv[];

{ int i;

for(i=2;i

printf("%s%c",argv[i],(i

}

现在DOS命令行输入:file My C Language and Programming<回车>,其输出结果是()。

A. C Language and Programming

B. My C Language and Programming

C. MyCLanguageandProgramming

D. file My C Language and Programming

二、填空题

1、以下程序实现计算10的阶乘。

#include

viod main()

{ long p;

int i;

p= 1 ;

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

p=p*i;

printf(" %d!=%ld\n ", 10, p);

}

2、以下程序实现将输入的一行字符中的大写字母转变为相应的小写字母,小写字母则转变为相应的大写字母,其余字符不变。以回车结束字符输入。

#include "stdio.h"

void main()

{ char s[80];

int i;

printf("please input a string:");

for(i=0; (s[i]=getchar())!= ‘\n’ ; i++);

s[i]= ‘\0’ ;

for(i=0;s[i]!='\0';i++)

{ if(s[i]>='a'&&s[i]<='z')

s[i]=s[i]+(‘A’-‘a’);

else if ( s[i]>='A'&&s[i]<='Z' )

s[i]=s[i]+ (‘a’-‘A’) ;

}

puts(s);

}

3、以下程序实现从键盘输入一个3行5列的二维整型数组表示的3×5的矩阵,并计算第2行元素之和。

#include

void main()

{ int i, j ;

int a[3][5], sum;

sum= 0 ;

printf("Input 15 numbers: ");

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

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

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

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

sum += a[1][j] ;

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

}

4、以下程序实现输入一个4行4列的整型数组,求其元素的最大值和最小值。

#include"stdio.h"

#define ROW 4

#define COL 4

void main()

{ int a[4][4] , i, j, max, min;

printf("input the 16 integers: ");

for(i=0;i

for(j=0; j

max=min= a[0][0] ;

for(i=0;i

for(j=0;j

if( a[i][j]>max ) max=a[i][j];

if(a[i][j]

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

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

}

5、以下程序实现计算5个学生的总成绩和平均成绩,其中5个学生的成绩存储在一个结构体数组中。

#include

struct stu

{ char name[10];

float score;

};

void main()

{ struct stu st[5]={"Mary",76,"John",85,"Tom",81.5, "Luis",76,"Michel",90.5};

int i=1;

float aver, total=0.0 ;

while( i<=5 )

{ total=total+ st[i-1].score ;

i++;

}

aver= total/5 ;

printf("\ntotal=%.2f,aver=%.2f\n", total, aver);

}

6、以下程序实现输入若干整数,统计其中大于零和小于零的个数。以零结束输入。

#include

void main()

{ int n, a, b;

a=b= 0 ;

scanf("%d",&n);

while( n!=0 )

{ if(n>0) a++ ;

else b++;

scanf("%d", &n );

}

printf("Number of N>0 or N<0 integers are: %d, %d\n", a, b);

}

7、以下函数sort用冒泡法实现对数组a 中的m个元素进行从大到小(降序)排序。

void sort(int a[], int m)

{ int i, j, t, temp;

for( i=0; i< m-1 ; i++ )

{ temp = 0;

for( j=0; j < m-i-1; j++)

{ if (a[j]>a[j+1])

{ temp = 1;

t = a[j]; a[j] = a[j+1] ; a[j+1] = t;

}

}

if(!temp) break ;

}

}

8、以下函数sort用选择法实现对数组a 中的m个元素进行从小到大(升序)排序。

void sort(int a[], int m)

{ int i, j, k, t;

for( i = 0; i < m-1; i++ )

{ k=i ;

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

if( a[j] < a[k] ) k=j ;

if( k != i )

{ t = a[k]; a[k]= a[i]; a[i] = t ;

}

}

}

三、改错题

1、以下程序实现统计输入字符串中英文字母、数字和其它字符的个数。以回车结束输入。

#include

void main()

{ char ch;

int letter; number; other;

letter==number==other==0; // =

while((ch=getchar())!='\0') // ‘\n’

{ if(ch>='a'&&ch<='z') letter++; // (ch>=’a’&&ch<=’z’||ch>=’A’&&ch<=’Z’)

else if (ch>=0 && ch<=9) number++; // (ch>=’0’&&ch<=’9’)

else other++;

}

printf("letter=%d,number=%d,other=%d\n", &letter, &number, &other);

// letter, number, other

}

2、以下程序实现从键盘输入三角形的三边长,求其面积,若三个边长不能构成三角形,则提示。

#include

#include

void main()

{ int a,b,c,s,area;

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

if( a+b>c || b+c>a || a+c>b ) // && &&

{ s = (a+b+c)/2;

area = sqrt(s(s-a)(s-b)(s-c)); s*(s-a)*(s-b)*(s-c)

printf("area is %.2f\n",area);

}

else printf(‘Invalid input.\n’); // ““

}

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

程序设计练习题

第六章程序设计 1、下列程序运行时,若从键盘上输入20,则屏幕上的输出是多少?Input “请输入一个数:” to x If x<=10 Y=2*x-5 Else Y=2*x+5 Endif ? Y 2、执行下列程序后,变量A的值为多少?B的值为多少? A=100 B=200 IF A-B<0 T=A A=B B=T ENDIF ? A,B 3、下列程序运行时,若从键盘上输入25时,屏幕上显示的结果是多少?INPUT “X=” TO X DO CASE CASE X>10 ? “A1” CASE X>20 ? “A2” OTHERWISE ? “A3” ENDCASE RETURN

4、执行下列程序,变量T中的值是多少? T=1 FOR I=1 TO 5 T=T*I ENDFOR ? “T=”,T 5、执行下列程序,屏幕上输出的是多少? D=”” SS=”ABCDE” FOR I=1 TO 5 D=D+SUBSTR(SS,6-I,1) ENDFOR ? D 6、执行下面程序,屏幕上输出的Y是多少? STORE 0 TO X,Y DO WHILE .T. X=X+1 DO CASE CASE INT(X/2)=X/2 LOOP CASE X>=10 EXIT OTHERWISE Y=Y+X ENDCASE ENDDO ? Y 7、下列程序运行时,若从键盘上输入5,则屏幕上输出的是_______。Input "请输入一个数:" to x Do case

Case x>10 ?"A1" Case x>20 ?"A2" otherwise ?"A3" Endcase Return 8、执行下列程序片段后,变量T中的值是_______。 T=1 FOR I=1 TO 5 T=T*I ENDFOR ? "T=",T 9、如下程序显示的结果是。 s=1 i=0 do while i<8 s=s+i i=i+2 Enddo ?s 10、如下程序的输出结果是。 i=1 DO WHILE i<10 i=i+2 ENDDO ?i 11、执行下列程序后,变量A的值为_______,变量B的值为_______。

C程序设计题库

填空题 20*2 ■对于51系列单片机,现有4种语言支持程序设计,它们是(汇编语言)、PL/M、(C语言)、BASIC。 ■单片机程序设计时需要在主程序中设计死循环来防止程序跑飞。在C语言中采用(while(1))或for(;;)语句实现死循环。 ■单片机程序设计中经常用到中断,在C语言程序设计中外部中断1的中断入口序号(2),而汇编语言程序设计中外部中断1的入口地址是(0013H)。 ■编写串口中断程序时要在函数说明部分后写interrupt 4 。 ■编写定时器0中断程序时要在函数说明部分后写interrupt 1 。 ■C语言程序设计中有一个无符号形字符变量temp和一个位变量Flag,现在分别对它们取反。相应的语句为temp=__~___temp; Flag=_!___Flag;。 ■I2C总线在传送数据过程中共有三种类型控制信号,它们分别是:_(起始信号)____、应答信号、_(停止信号)_____。 ■I2C的地址由(协议规定)与(硬件设置)两部分组成。 ■I2C器件的两条信号线分别为串行时钟线SCL 与串行数据线 SDA 。 ■MCS-51单片机操作I2C器件时,单片机必须做为主机,I\O编程。 ■在Cx51所有的数据类型中,只有bit 与unsigned char 直接支持机器指令。 ■编译器性能比较有如下几个方面:算数支持、生产代码大小、开打速度、支持浮点和long 。 ■在KEIL开发套件中,BL51链接器/定位器用于创建一个绝对目标横快。 ■Cx51中函数分为两大类:标准库函数和用户自定义函数。 ■在函数名前如果不指定函数类型,则该函数的类型为整型。 ■具有一定格式的数字或数值叫做数据,数据的不同格式叫做数据类型, 数据按一定的数据类型进行的排列、组合及架构称为数据结构。 ■数据类型的转换有自动转换与强制转换两种。 ■直接出现在程序中的数值(如TMOD=0x21)称为常数。在程序运行的过程中,其值不能改变且被定义为符号的(如#define CONST 60)称为常量。 ■软件对常量与变量的命名规范是:常量名用大写字母,变量名用小写字母。 ■MCS-51单片机串口用于中断通讯时,在进行初始化时必须设置的特殊功能寄存器有:

50道经典的编程题

【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 【程序3】 题目:打印出1000以内所有的"水仙花

数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 【程序4】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 【程序6】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:利用辗除法。 【程序7】

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

程序设计题目

程序设计题一:学生信息管理系统 【课题内容】 学生信息的管理是每个学校必须具有的管理功能,主要是对学生的基本情况及学习成绩等方面的管理。该系统模拟一个简单的学生管理系统,要求对文件中所存储的学生数据进行各种常规操作,如:排序、查找、计算、显示等功能。通过此课题,熟练掌握文件、数组、结构体的各种操作,在程序设计中体现一定的算法思想,实现一个简单的学生信息管理系统。 【基本要求】 (1)学生信息包括: 学生基本信息文件(student.txt)(注:该文件不需要编程录入数据,可用文本编辑工具直接生成)的内容如下: 学号姓名性别宿舍号码电话号码 01 张成成男 501 87732111 02 李成华女 101 87723112 03 王成凤女 101 87723112 04 张明明男 502 87734333 05 陈东男 501 87732111 06 李果男 502 87734333 07 张园园女 102 87756122 ………………… (2)学生成绩基本信息文件(score.dat)及其内容如下:((注:该文件内容需要编程录入数据,具体做法见下面的要求) 学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分 01 A01 大学物理 3 66 78 82 02 B03 高等数学 4 78 -1 90 01 B03 高等数学 4 45 -1 88 02 C01 VF 3 65 76 66

…………………… (3)需要实现的功能 1)数据录入和计算功能:对score.dat进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据,综合成绩、实得学分由程序根据条件自动运算。 综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%;如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70% 。 实得学分的计算:采用等级学分制,综合成绩在90-100之间,应得学分=学分*100%;综合成绩在80-90之间,应得学分=学分*80%;综合成绩在70-80之间 ,应得学分=学分*75%;综合成绩在60-70之间,应得学分=学分*60%;综合成绩在60以下 ,应得学分=学分*0%。 2)查询功能:分为学生基本情况查询和成绩查询两种 (1)学生基本情况查询: ①、输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出,格式如下: ②、输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。(格式如上所示) (2)成绩查询: ①、输入一个学号时,查询出此生的所有课程情况,格式如下: 学号:xx 姓名:xxxxx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx ………………… … 共修:xx科,实得总学分为: xxx (3)删除功能:

《C程序设计》试题

《C程序设计》试题 一、单项选择题。(每题1分,共20分) 1. C程序的基本单位是:() A.子程序 B.程序 C.子过程 D.函数 2.在C语言中,非法的八进制是:() 3. 不是C语言实型常量的是:() .字符串“xyzw”在内存中占用的字节数是:() 5. 若已定义f,g为double类型,则表达式:f=1,g=f+5/4的值是:() A.2.0 若有语句char c1=`d`,c2=`g`;printf(“%c,%d\n”,c2-`a`,c2-c1);则输出结果为:() (a的ASCII码值为97) ,2 ,3 ,2 ,g 7. 使用语句scanf(“a=%f,b=%d”,&a,&b);输入数据时,正确的数据输入是: =,b=3 = b=3 3 表示关系12<=x<=y的C语言表达式为:() A.(12<=x)&(x<=y) B. (12<=x)&&(x<=y) C. (12<=x)|(x<=y) D.(12<=x)||(x<=y) 9.设x=1,y=2,m=4,n=3,则表达式x>yx:mc4)后,s,t的值为:() ,2 ,1 ,1 ,0 12. 语句for(a=0,b=0;b!=100&&a<5;a++)scanf(“%d”,&b); scanf 最多可执行次数为:() 13. 对于for(s=2;;s++)可以理解为:() A. for(s=2;0 ;s++) B. for(s=2;1 ;s++) C. for(s=2;s<2 ;s++) D. for(s=2;s>2;s++)

程序设计典型例题

我先给你一些VF的例题看看吧! Vfp--程序设计典型例题 Vfp题库:程序设计基础典型例题 [例1] 在()窗口中可以控制列表框内显示的变量种类。 A.跟踪窗口 B.监视窗口 C.局部窗口 D.调动堆栈窗口 分析:局部窗口用于显示模板程序中的内存变量,并显示它们的名称.当前取值的类型。它可以控制在列表内显示的变量类型。 答案c 例2下面选项中关于ACCEPT命令说法错误的是() A.ACCEPT命令格式是:ACCEPT[<字符表达式>] TO<内存变量> B.该命令只接收字符串,但是用户在输入字符串时,必须要加上定界符 C如果不输入任何内容直接按回车键,系统就会把空串赋给指定的内存变量 D如果选用<字符表达式>,那么系统就会首先显该表达式的值,作为提示信息 分析:该命令只接收字符串,但用户在输入时不需要加定界符;否则,系统会把定界符当作字符串的一部分输出. 答案:B 例3下列关于过程的说法中不正确的是 A.过程文件可以放在任何程序文件代码的后面,也可以保存在称为过程文件的单独文件里 B.过程文件只包含过程,这些过程只能被过程文件调用 C.如果需要打开多个过程文件,可以在调用过程语句中加ADDITVE,那么在打开过程文件时, 并不关闭原先已打开的过程文件 D.关闭个别过程文件的命令格式是:RELESE PROCEDURE<过程文件> 分析:过程文件只包含过程,这些过程可以被任何其它程序调用.命令格式SETPOCEDURE TO[<过程文件>][ADDITIVE]就可以打开多个过程文件.当使用不带任何文件名的SET PROCEDURE TO命令时,将会关闭所有的过程文件,使用命令RELEASE PROCEDURE<过程文件>时,将关闭指定的过程文件. 答案:B 例4 在一个程序定义了的一些变量,选出局部变量( ) 1.PRG PUBLIC aI LOCAL a2,a3 SCORE'B'TO a4 LOCATE a5 A.a1 B.a2,a3 C.a4 D.a5 分析:A是公共变量,C是私有变量,D的命令和LOCA TE相似,但不存在这样定义变量的命令.只有B才是定义了两个局部变量. 答案:B 例5 不需要先建立就可以使用的变量是( ) A.局部变量 B.公共变量 C.私有变量 D.数组 分析:私有变量是指在程序中直接使用,由系统自动隐含建立的变量.即没有通过PUBLIC 或

C语言程序设计 复习题库

一、填空 1. break 语句通常用于switch // 循环中。 2. C 语言对数组下标的引用一般从0 开始。 3. C 语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。 4. C 标准库函数中,字符串的处理函数包含在string.h 头文件中,数学函数包含在 math.h 头文件中。 5. C 程序的运行需要经过编译和链接两步进行。 6. C 程序中用/**/ 括起来的内容是程序的注释语句。 7. C 语言函数是由函数首部和函数体两部分组成。其中,函数首部包括函数类型、函数 名和函数参数。 8. C 语言提供的三种逻辑运算符是& ,// ,!。 9. C 语言源程序经过编译后,生成文件的后缀名是.c 。 10. C 语言源程序经过连接后,生成文件的后缀名是.exe 。 11. C 语言中,关系表达式和逻辑表达式的值是1//0 。 12. C 语言中的标识符只能由三种字符组成,他们是字母,数字,下划线。 13. C 语言中的每条基本语句以;作为结束符,每条复合语句以} 作为结束符。 14. C 语言中函数返回值的类型是由函数类型决定的。 15. C 源程序的基本单位是函数。 16. int a = 2, b = 3; 表达式 a > b ? a ++ : ++ b 的值为 4 。 17. int x=1,y=1,z=1; x+=y+=z; 则表达式xb>c 的值是0 。 19. 定义一个指针p,它指向一个有 6 个整型元素的一维数组,定义语句为int *p=a[6] ; 。 20. 定义一个指针数组p ,它有 4 个元素,每个指针指向一个整型数据,定义语句为int *p[4]; 。 21. 赋值语句是由= 加上一个分号构成。 22. 构成数组的各个元素必须具有相同的类型。 23. 关系表达式x+y>5 的相反表达式为x+y !>5 。 24. 函数strlen("1234\0xy") 的值为:9 。 25. 函数的形参在未被调用前不分配空间,函数形参的数据类型要和实参相同。 26. 函数体用{ 开始,用} 结束。 27. 结构化设计中的三种基本结构是顺序,选择,循环。

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

程序设计典型例题解析(2)

程序设计典型例题解析(2)

典型例题解析(2) 一、填空题 1.以顺序输入模式打开“c:\source1.txt”文件的命令是(1);以输出方式打开“c:\source2.txt”文件的命令是(2)。 分析:Print # 语句用于将把数据写入文件中。Print语句格式为: Open 文件名 [For模式] As [#] 文件号 “For 模式”为指定打开文件的模式是数据的输入模式还是输出模式。 结论:答案应为:(1)Open "c:\source1.txt" For Input As #1 (2)Open "c:\source2.txt" For Output As #2 2.在Visual Basic中,文件系统控件包括(1)、(2)和文件列表框(FileListBox)。三者协同操作可以访问任意位置的目录和文件,可以进行文件系统的人机交互管理。 分析:在Visual Basic中,文件系统控件包括驱动器列表框(DriveListBox)、目录列表

框(DirListBox)和文件列表框(FileListBox)。驱动器列表框可以选择或设置一个驱动器,目录列表框可以查找或设置指定驱动器中的目录,文件列表框可以查找指定驱动器指定目录中文件信息,三者协同操作可以访问任意位置的目录和文件,可以进行文件系统的人机交互管理。 结论:答案应为:(1)驱动器列表框(DriveListBox)(2)目录列表框(DirListBox) 3.每次重新设置驱动器列表框的Drive属性时,都将引发(1)事件。可在该事件过程中编写代码修改目录列表框的路径,使目录列表框内容随之发生改变。 分析:在Visual Basic中,每次重新设置驱动器列表框的Drive属性时,都将引发Change事件。可在Change事件过程中编写代码修改目录列表框的路径,使目录列表框内容随之发生改变。驱动器列表框的默认名称为Drive1,其Change事件过程的开头为Drive1_Change()。 结论:答案应为:(1)Change 4.目录列表框用来显示当前驱动器下目录

C++程序设计试题及答案

C++程序设计试题 一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 ++源程序文件扩展名为( A ) A..cpp B..h C..1ib D..obj 2.在C++中使用流进行输入输出,其中专用于从键盘进行输入的流是( B ) 3.包含自定义头文件的预处理指令是( D ) A.#define<> B.#include C.#define D.#include"" 4.用于标识十六进制前缀或后缀是( D ) A.元 B.后缀L或e C.前缀零 D.前缀0x 5.设存在整型变量int x,则下列句与其它三项含义不同的是( A ) * p=&x; & p=x; & p=x; &p=x; 6.在定义类成员时,为产生封装性,则需使用哪个关键字( D ) 7.设函数void swap(int&,int&)将交换两形参的值,如两整型变量int a=10;int b=15; 则执行swap(a,b)后,a、b值分别为( C ) ,10 ,15

,10 ,15 8.函数默认参数在函数原型中说明,默认参数必须放在参数序列的( C) A.前部 B.中部 C.后部 D.两端 9.设存在函数int min(int,int)返回两参数中较小值,若求15,26,47三者中最小值,下列表达式中错误的是( B ) m=min(min(15,26),min(15,47)); m=min(15,26,47); m=min(15,min(47,26)); m =min(min(47,26),16); 10.下列函数不能和函数void print(char)构成重载的是(C ) print(int); print(char,char); print(char); print(int,int); 11.在下列成对的表达式中,运算结果类型相同的一对是( D ) /2和/ /和7/2 0和/2 l2.内联函数的特点是( D ) A.减少代码量,加快访问速度 B.减少代码量,减缓访问速度 C.增加代码量,减缓访问速度 D.增加代码量,加快访问速度

C语言程序设计试题集及答案

单项选择题 (002) 阅读程序题 (018) 程序填空题 (039) 编写程序题 (070) 一、单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查对C语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题,应该通过上机实验来检验。 【1.1】以下不正确的C语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。 A) #define B) _123C) %d D) \n

【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 ??? A) print B) i\am C) Pxq D) str_l ??? _3d one_half My->book Cpp ??? oodbs tart$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) 同一个运算符号在不同的场合可以有不同的含义 【1.8】在C语言中,错误的int类型的常数是。 A) 32768 (超过了范围) B) 0 C) 037 D) 0xAF 【1.9】执行语句printf("%x",-1);屏幕显示____。 A) -1 B) 1 C) –ffff D) ffff 【1.10】已知long i=32768;执行语句printf("%d",i);屏幕显示____。 A) -1 B) -32768C) 1 D) 32768 【1.11】已知long i=65539; 执行语句printf("%d",i);屏幕显示____。 A) 65539 B) -3 C) 3D) 程序不能执行 【1.12】在C语言中,整数-8在内存中的存储形式是。 A) 1111 1111 1111 1000B) 1000 0000 0000 1000 C) 0000 0000 0000 1000 D) 1111 1111 1111 0111 【1.13】C语言中字符型(char)数据在内存中的存储形式是____。

C语言程序设计入门经典例题

1、加法练习程序:由用户通过键盘输入加数和被加数,程序显示加法式子,用户通过键盘作答后,程序给出正确与错误提示信息。要求:利用C的选择语句if条件语句或switch 开关语句,键盘输入数据前,程序会出被输入数据的信息提示。 #include void main(){ int a,b,c; printf("please put an addend:\n");scanf("%d",&a); printf("please put an augend:\n");scanf("%d",&b); printf("please answer the question:a+b=?");scanf("%d",&c); if(a+b==c) printf("very good!"); else printf("wrong! "); } 个人感觉这个程序最不好的地方是,不管回答正确还是回答错误,程都会立即结束,所以我用了do…while实现一个回答错误之后获得再次回答机会的循环,则程序修改如下: #include void main(){ int a,b,c; printf("请输入一个加数:\n");scanf("%d",&a); printf("请输入一个被加数:\n");scanf("%d",&b); do { printf("请回答:a+b=");scanf("%d",&c); if(a+b!=c) printf("请再想一想\n"); } while(a+b==c) printf("回答正确!"); } 2、判闰年程序:判断某一年是否闰年? 要求:程序首先提示用户从键盘输入4位数年份,程序能显示“XXXX年是闰年”或“XXXX年不闰年”的输出信息。 算法:year 是闰年,即year能被4整除但不能被100整除,或 year 能被 400 整除。其对应的C逻辑表达式为:(year % 4 = = 0 && year % 100 != 0) || (year % 400 = = 0) 或: (!(year % 4) && year % 100) || !(year % 400 ) 程序中可设置1个变量leap来代表是否闰年的信息,闰年:leap=1; 不闰年:leap=0。 #include void main() int year; printf("请输入4位数年份:");scanf("%d",&year); if(year%4==0&&year%100!=0||year%400==0)//闰年就是能被4整除但不能被100整除及能被400整除的

完整word版,VB程序设计例题12例

索引 一、在窗体上画一个文本框,其名称为Text1,Text属性为空白。再画一个命令按钮,其名称为C1,Visible属性为False。编写适当的事件过程。程序运行后,如果在文本框中输入字符,则命令按钮出现。 二、计算圆的周长和面积:在窗体中添加一个文本框(Text1)和一个对应的标签(Label1),再添加两个命令按钮(Command1和Command2)和一个图片框(Picture1)。程序运行时,当单击Command1按钮后,计算圆的周长;当单击Command2按钮后,计算圆的面积;计算结果输出在图片框中。(要求在未输入半径前两个按钮呈灰色不可用。) 三、在窗体上添加三个文本框和对应的三个标签,标签的标题分别是“个位”、“十位”、“百位”。程序运行时,当单击窗体后,随机产生一个【100,999】区间内的整数,将它的个位、十位、百位数字分别显示在对应的文本框中。 四、设计一个计算程序:在窗体上添加四个文本框和四个对应的标签,标签的标题分别是“语文”、“数学”、“外语”、“平均成绩”,三个命令按钮,标题分别为“清除”、“计算”、“退出”。程序运行后,用户按“清除”按钮,则清除文本框中显示的内容,按“计算”按钮,则计算三科平均成绩,将计算结果显示在第四个文本框中(计算结果保留小数点后一位)。单击退出按钮则程序退出。 五、某税务部门征收所得税,规定如下:(1)收入200元以内,免征。(2)收入在200~400元,超过200元的部分纳税3%。(3)收入超过400元的部分,纳税4%。(4)当收入达5000元或超过时,将4%税金改为5%。编程序实现上述操作。 六、给定三角形的三条边的边长,计算三角形的面积。编写程序,首选判断给出的三条边能否构成三角形,如可以构成,则计算并输出该三角形的面积,否则要求重新输入。当输入-1时结束程序。 七、编程求100以内的全部素数。 八、编程打印钻石图案。 九、输出杨辉三角形。 十、有一个数组,包含了10个不同的随机整数(20~90),要求计算出它们的平均值,并输出这个数组中最接近于平均值的数。 十一、在一个窗体上建有包含三个命令按钮的控件数组和一个文体框。编程实现当按下标题不同的命令按钮时,使文体框中文字的字体发生相应的变化。 十二、编程求1000以内的完全数。所谓完全数是指这样的自然数:它的各个约数(不包括该数本身)。如28=1+2+4+7+14就是一个完全数。

C语言程序设计期末考试试题及答案

C 语言程序设计 试 题 (2008 /2009 学年 第 二 学期) 一. 选择题(满分30分,每题2分) 1.若a 、b 、c 都定义为int 类型且初值为0,则以下不正确的赋值语句是 D 。 A. a=b=c+8; B. a+=y+3; C. c++; D. a+b+c 2. 已知int j ,i=1;执行语句“j=i++;”后,变量i 的值是 B 。 A. 1 B. 2 C. –1 D. -2 3.执行下面程序: #include "stdio.h" void main() { int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf(“%d,%d,%d ”,a,b,c); } 则输出结果是: A 。 A. 2,2,4 B. 4,2,3 C. 5,5,3 D. 4,2,5 4.若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为 D 。 A. a< >0 B. !a C. a=0 D. a 5. for (j=0;j<11;j++);循环结束后,j 的值是 B 。 A. 12 B. 11 C. 10 D. 9 6. C 语言中函数返回值的类型由 D 决定的。 A. return 语句中的表达式类型 B. 调用该函数的主调函数的类型 C. 调用函数时临时决定 D. 定义函数时所指定的函数类型 7. 下列说法中正确的是 B 。 A 在调用用户自定义函数时,必须对其进行声明。 B 函数可以返回一个值,也可以什么值也不返回。 C 说明函数时,必须明确参数的类型和返回值。 D 在程序设计中空函数没有什么作用。 8. 若int i=10;执行下列程序后,变量i 的正确结果是 D 。 switch ( i ) {case 0: i+=1; case 10: i+=1; case 11: i+=1; default: i+=1; } A. 10 B. 11 C. 12 D. 13 9. 下列语句中不正确的字符串赋值或初始化的是 C 。 A . char str[10]={"strings"}; B.char str[8]={'s','t','r','i','n ','g','s','\0'}; C. char str[10]; str= "strings"; D. char str[]= "strings"; 10. 有如下程序: #include void main() { int a=1,b=0,c=0; if (a

大学经典C语言编程试题

大学经典C语言编程试 题

1.输入两个正整数,m和n,求其最大公约数和最小公倍数。 #include<> void main() { int hcf(int,int); /*函数声明*/ int lcd(int,int,int); /*函数声明*/ int u,v,h,l; printf("Please input two numbers:\n"); scanf("%d,%d",&u,&v); h=hcf(u,v); l=lcd(u,v,h); } int hcf(int u,int v) { int t,r; if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v;v=r;} return(v); } int lcd(int u,int v,int h) { return(u*v/h); } 2.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。 #include<> int letter,digit,space,others; void main() { void count(char[]); char text[80]; printf("Please input string:\n"); gets(text); printf("string:\n"); puts(text); letter=0; digit=0; space=0; others=0; count(text); printf("letter:%d,digit:%d,space:%d,others:%d\n",letter,digit,space,others); } void count(char str[]) {

C语言程序设计考试题库

一、判断题 1、所谓常量,就是在程序运行过程中其值可以改变的量。() 2、一个C程序可以由多个源程序文件构成,但其中只能有一个main()函数。() 3、在C语言中do-while 语句和for循环均是先执行循环体语句,再判断表达式。() 4、在函数调用中将变量的地址作为实参传递给对应形参时,实现的是单向的值传递。() 5、C语言中所有字符串都是以‘\0’结束的。() 6、do-while构成的循环语句中的循环体最少执行1次。() 7、数组名在C语言中表示的是数组的首地址。() 8、使用gets()函数输入字符串时可以在字符串中输入空格。() 9、算术运算符中‘/’的优先级高于‘%’。() 10、char a[5];该语句表明数组a中的第五个元素为a[5]。() 11、C语言源程序文件的扩展名均为.c。() 12、char a[5];数组a中有a[1]、a[2]、a[3]、a[4]、a[5]共5个元素。() 13、C语言程序区分大小写,字符常量必须定义为大写。() 14、若int i=10,j=2;则执行i*=j+8;后i的值为28。() 15、若int x=100,y=200;则语句printf("%d",(x,y));输出结果为100。() 16、c语言中的标识符只能由字母,数字和下划线三种字符组成。() 17、函数getchar()的作用是:输出一个字符。() 18、一个C语言程序总是从第一个函数开始执行。() 19、在c语言中,char型数据在内存中是以ASCII码形式存储的。() 20、在C语言中switch语句必须使用break语句。() 二、选择题 1、以下说法正确的是()。 A、C语言程序总是从第一个函数开始执行。 B、C语言程序中要调用的函数必须在main()函数中定义。 C、C语言程序总是从main()函数开始执行。

相关文档
最新文档