文档库 最新最全的文档下载
当前位置:文档库 › 专升本C程序设计81例题

专升本C程序设计81例题

专升本C程序设计81例题
专升本C程序设计81例题

C程序设计题100例

1.按顺序读入10名学生4门课程的成绩,计算出每

位学生的平均分并输出。

#include

main()

{int n,k;

float score,sum,ave;

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

{sum=0.0;

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

{scanf("%f",&score);

sum+=score;

}

ave=sum/4.0;

printf("NO%d:%f\n",n,ave);

}

}

2.输入10个学生的成绩,求出平均分,并统计低于

平均分的人数及及格率。

#include

main()

{

int a[10],i,sum=0,unave=0;

float ave,rate;

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

{

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

sum+=a[i];

}

ave=sum/10;

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

{

if(a[i]

unave++;

}

rate=(float)(10-unave)/10*100;

printf("%4.2f,%d,%4.2f\%\n",ave,unave,rate); }

3.题目:利用条件运算符的嵌套来完成此题:学习

成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

1.程序分析:(a>b)?a:b这是条件运算符的基本例子。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int score;

char grade; printf("please input a score\n");

scanf("%d",&score);

grade=score>=90?'A':(score>=60?'B':'C');

printf("%d belongs to %c",score,grade);

}

4.将输入的小写字母转换成大写字母输出,当输入

‘$’,字符时,则停止转换。

#include

main()

{

char c;

printf("Enter a character:");

do

{

c=getchar();

if('a'<=c&&c<='z')

printf("%c\n",c-32);

}

while(c!='$');

}

5.题目:利用递归函数调用方式,将所输入的5个

字符,以相反顺序打印出来。

1.程序分析:

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int i=5;

void palin(int n);

printf("\40:");

palin(i);

printf("\n");

}

void palin(n)

int n;

{

char next;

if(n<=1)

{

next=getchar();

printf("\n\0:");

putchar(next);

}

else

{

next=getchar();

palin(n-1);

putchar(next);

}

}

6.将n个字符串按由大到小的顺序进行排序。

#include

void f(char p[][10], int n)

{

char t[20]; int i,j;

for(i=0;i

for(j=i+1;j

if(strcmp(p[i],p[j])<0)

{ strcpy(t,p[i]),strcpy(p[i],p[j]);strcpy(p[j ],t);}

}

main()

{

char

p[][10]={"abc","aabdfg","abbd","dcdbe","cd"}; int i;

f(p,5);

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

printf("%s\n",p[i]);

}

7.从键盘接受一个字符串,分别统计其中大小写字

母的个数。

#include

void checkSum(char* s);

int main()

{

char szInput[1024];

gets(szInput);

checkSum(szInput);

return 0;

}

void checkSum(char* s)

{

int nA=0;

int na=0;

char c;

while(c=*s++)

{

if(c>='A'&& c<='Z')

nA++;

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

na++;

}

printf("Upper %d. Lower %d.\n",nA,na);

} 8.输入一行字符,分别统计出其中:英文字母、空

格、数字和其他字符的个数。

#include"stdio.h"

main()

{char c;int i=0,j=0,k=0,l=0;

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

{if(c>=65&&c<=90||c>=97&&c<=122) i++;

else if(c>=48&&c<=57) j++;

else if(c==32) k++;

else l++;}

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

}

9.题目:输入一行字符,分别统计出其中英文字母、

空格、数字和其它字符的个数。

1.程序分析:利用while语句,条件为输入的字符不为'\n'.

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

char c;

int letters=0,space=0,digit=0,others=0;

printf("please input some characters\n"); while((c=getchar())!='\n')

{

if(c>='a'&&c<='z'||c>='A'&&c<='Z')

letters++;

else if(c==' ')

space++;

else if(c>='0'&&c<='9')

digit++;

else

others++;

}

printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,

space,digit,others);

}

10.编写一函数,由实参传来一个字符串,统计此字

符串中字母、数字、空格和其它字符的个数,在

主函数中输入字符串以及输出上述结果。

char tongji(str0,b)

char str0[100];

int b[4];

{int i;

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

{if(str0[i]>=65&&str0[i]<=90||str0[i]>=97&&st r0[i]<=122) b[0]++;

else if(str0[i]>=48&&str0[i]<=57) b[1]++; else if(str0[i]==32) b[2]++;

else b[3]++;}

}

main()

{char str1[100];static int i,a[4];

gets(str1);

tongji(str1,a);

printf("zimu Shuzi Kongge Qita\n");

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

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

}

11.有一篇文章,共有3行文字,每行有个80字符。

要求分别统计出其中英文大写字母、小写字母、

空格以及其它字符的个数。

main()

{int i,j=0,k=0,l=0,m=0,n=0;char

str0[301],str1[100],str2[100],str3[100]; gets(str1);gets(str2);gets(str3);

strcat(str0,str1);strcat(str0,str2);strcat(st

r0,str3);

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

{if(str0[i]>=65&&str0[i]<=90) j++;

else if(str0[i]>=97&&str0[i]<=122) k++;

else if(str0[i]>=48&&str0[i]<=57) l++;

else if(str0[i]==32) m++;

else n++;}

printf("Daxie Xiaoxie Shuzi Kongge Qita\n"); printf("%5d %7d %5d %6d %4d\n",j,k,l,m,n); }

12.有一行电文译文下面规律译成密码:

A->Z a->z

B->Y b->y

C->X c->x

即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变,要求编程序将密码回原文,并打印出密码和原文。

main()

{int i;char str1[100],str2[100];

gets(str1);

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

if(str1[i]>=65&&str1[i]<=90)

str2[i]=155-str1[i];

else if(str1[i]>=97&&str1[i]<=122)

str2[i]=219-str1[i];

else

str2[i]=str1[i];

printf("%s\n%s\n",str1,str2); }

13.编程序。输入两个字符串(<40个字符),连接后

输出(不准用系统函数)。

/* Note:Your choice is C IDE */

#include"stdio.h"

#include"string.h"

void main()

{

int i,j,k;

char str1[80],str2[40];

scanf("%s",str1);

scanf("%s",str2);

k=strlen(str1);

j=strlen(str2);

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

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

printf("%s",str1);

}

main()

{int i,j;char str1[100],str2[100],str3[201]; gets(str1);

gets(str2);

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

str3[i]=str1[i];

for(j=0;str2[j]!='\0';j++)

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

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

}

14.用递归法将一个整数n转换成字符串(例如:输入

483,应输出字符串“483”),n的位数不确定,

可以是位数不确定;超过5且数值在-32768到

32767之间的任意整数。

#include

void convert(n)

int n;

{

int i;

if((i=n/10)!=0)

convert(i);

putchar(n%10+'0');

}

main()

{

int number;

printf("\nInput a integer:");

scanf("%d",&number);

printf("\nOutput is:");

if(number<0)

{

putchar('-');

number=-number;

}

convert(number);

}

15.写一函数,输入一个四位数字,要求输出这四个

数字字符,但每两个数字间空格。如输入1990,应输出"1_9_9_0"。

char f(b)

char b[4];

{int i=0;

for(;i<4;i++)

{printf(" ");

printf("%c",b[i]);}

printf("\n");

}

main()

{int a,u,v,w,t;char c[4];

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

u=a*0.001;v=0.01*(a-1000*u);w=(a-1000*u-100*v )*0.1;t=a-1000*u-100*v-10*w;

c[0]=u+48;

c[1]=v+48;

c[2]=w+48;

c[3]=t+48;

f(c);

}

16.有一字符串,包含n个字符。写一个函数,将此字

符串中从第m个字符开始的全部字符复制成为另

一个字符串。要求在主函数中输入字符串及m值并输出复制结果。

void strcpyn(char*s,char*t, int n)

{

char*p=s+n;

char*q=t;

while(*p)

{

*q=*p;

q++;

p++;

}

*q='\0';

}

main()

{

char s[100]={0};

char t[100]={0};

int n=0; printf("input string s:\n");

scanf("%s",s);

printf("input start n:\n");

scanf("%d",&n);

strcpyn(s,t,n);

puts(t);

}

17.实现字符串赋值,即将t所指字符串复制到s所指

内存空间中,形成一个新字符串s。

#include

void sstrcpy(char*s,char*t)

{

while(*s++=*t++);

}

main()

{

char str1[100],str2[]="abcdefghijk";

sstrcpy(str1,str2);

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

}

18.取出一个字符串的左边n个字符组成新字符串并

输出,原字符串及n从键盘输入。本题要求用指针字符的指针来处理字符中的字符。

#include

#include"string.h"

main()

{

char a[100],b[100],*p_a=a,*p_b=b;

int n,i;

gets(p_a);

scanf("%d",&n);

for(i=0;i

*(p_b+i)=*(p_a+i);

*(p_b+i)='\0';

puts(p_b+i);

}

19.编写一个程序,将字符数组s2中的全部字符拷贝

到字符数组s1中,不用strcpy函数。拷贝时,’\0’也要拷贝过去,’\0’后面的字符不拷贝。

#include"stdio.h"

main()

{char s1[80],s2[80];

int i;

printf("Input s2:");

scanf("%s",s2);

for(i=0;i

s1[i]=s2[i];

printf("s1:%s\n",s1);

}

20.已知文本文件sname.txt中存有40个人名,每个

人名是一个字符串(长度要求<=20)。从键盘上输入某个人名(字符串,长度<=20),在sname.txt 文件中查找,找到则输出“YES”,找不到输出

“NO!”。

说明:因为建立的sname.txt文件中的字符串是含有回车换行符的,所以进行查找时的的姓名字符串也需要插入一个回车换行符。

#include"stdio.h"

#include"string.h"

void main()

{

FILE *fp;

char name[22],s[22];

int flag,i;

if((fp=fopen("sname.txt","r"))==NULL)

exit(0);

scanf("%s",name);

for(i=0;name[i]!='\0';i++)/*找到字符串结束标记*/

name[i]='\n';/*插入一个回车换行符*/

name[i+1]='\0';/*补充一个字符串结束标记*/ flag=0;

while(!feof(fp))

{

fgets(s,21,fp);

{

flag=1;

break;

}

}

if(flag==1)

printf("YES!\n");

else

printf("NO!\n");

fclose(fp);

}

21.写一函数,使输入的一个字符串按反序存放,在

主函数中输入输出字符串。

main()

{char str0[100];

gets(str0);

fanxu(str0);

puts(str0);

}

fanxu(str1)

char str1[100];

{int i,t,j;

char str2[100];strcpy(str2,str1); t=strlen(str1);

for(i=0,j=t-1;j>-1;i++,j--)

str1[i]=str2[j];

}

22.写一函数,将两个字符串中的元音字母复制到另

一个字符串,然后输出。

fuzhi(a,b)

char a[100],b[100];

{int i,j=0;

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

if(a[i]==97||a[i]==101||a[i]==105||a[i]==111| |a[i]==117||a[i]==65||

a[i]==69||a[i]==73||a[i]==85) {b[j]=a[i];j++;} }

main()

{char str1[100],str2[100];

gets(str1);

fuzhi(str1,str2);

puts(str2);

}

23.编一个程序,将两个字符串S1和S2比较,如果

S1>S2,输出一个正数;S1=S2,输出0;S1

#include

#include

main()

{int i,resu;

char s1[100],s2[100];

printf("\n input string1:");

gets(s1);

printf("\n Input string2:");

gets(s2);

i=0;

while(s1[i]==s2[i]&&s1[i]!='\0') i++;

if(s1[i]=='\0'&&s2[i]=='\0') resu=0;

else resu=s1[i]-s2[i];

printf("\n result:%d\n",resu);

}

24.写一函数,输入一行字符,将此字符串中最长的

单词输出。

cechang(str1,word0)

char str1[100],word0[15];

{int i=0,j=0,t=0;

static char word1[15];

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

{if(!(str1[i]>=97&&str1[i]<=122||str1[i]>=65& &str1[i]<=90))

{t=j;j=0;continue;}

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

if(j>=t) strcpy(word0,word1);}

}

main()

{char str0[100],longword[15];

gets(str0);

cechang(str0,longword);

puts(longword);

}

25.输出以下形式的金字塔图案:

*

* * *

* * * * *

* * * * * * *

#include

main()

{int i,j;

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

{for(j=1;j<=4-i;j++)printf(" ");

for(j=1;j<=2*i-1;j++)printf("* ");

printf("\n");

}

}

26.题目:打印出如下图案(菱形)

*

***

*****

*******

*****

***

*

1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int i,j,k;

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

{

for(j=0;j<=2-i;j++) printf(" ");

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

printf("*");

printf("\n");

}

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

{

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

printf(" ");

for(k=0;k<=4-2*i;k++)

printf("*");

printf("\n");

}

}

27.打印出以下杨辉三角(如下)。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

/* Note:Your choice is C IDE */

#include"stdio.h"

void main()

{

static int m,n,k,b[7][7]={0};

b[0][1]=1;

for(m=1;m<7;m++)

{

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

{b[m][n]=b[m-1][n-1]+b[m-1][n];

printf("%-5d",b[m][n]);} printf("\n");

}

}

28.请输出如下形式的数字。

100000

210000

321000

432100

543210

654321

#include

main()

{

int a[6][6],i,j,t;

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

{

t=i+1;

7

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

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

for (i =0;i <6;i ++) {

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

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

29. 将n 行n 列的矩阵A 转置成A ’,如

A=16151413121110987654321 A ’=

16

128415117314

106213

951。

#include #define N 4

void rotate(int a[N][N]) {

int i,j,t;

for (i =0;i

main() {

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

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

rotate(a); for (i =0;i

printf("%-4d",a[i][j]); if (j ==N -1) printf("\n"); } }

30. 打印以下图案 * * * * * * * * * * * * * * * * * * * * * * * * *

main()

{int i,j,k;char a[5][5]; for (i =0;i <5;i ++) {for (j =0;j <5;j ++)

{a[i][j]='*';printf("%c",a[i][j]);} printf("\n");

for (k =1;k <=i +1;k ++) printf("\40");} printf("\n"); }

31. 求出M 行N 列二维数组每列元素中的最小值,并计

算它们的和值。 #include #define M 2 #define N 4 main()

{int i,j,k,t,s =0,sum =0,a[M][N]; for (i =0;i

scanf("%d",&a[i][k]); if (k >=N)

printf("\n"); }

for (t =0;t

{for (j =0;j

if (a[j][t]>a[j+1][t]) s =a[j +1][t +1]; else

s =a[j][t]; }

printf("%d\n",&s); sum +=s; }

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

32. 用findmax 函数求出数组中最大元素在数组中的

下标。

#include

findmax(int *s,int t,int *k) {

int p;

for(p=0,*k=p;p

if(s[p]>s[*k])

*k=p;

}

main()

{

int a[10],i,k;

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

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

findmax(a,10,&k);

printf("NO.=%d\na[%d]=%d\n",k,k,a[k]);

}

33.先为数组a输入数据,再为x输入一个数据,在数

组a中找出第一个与x相等的元素并将其下标输

出,若不存在这样的元素,输出“Not found!”

标志。

/* Note:Your choice is C IDE */

#include"stdio.h"

void main()

{

int i,x,a[10];

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

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

scanf("%d",&x);

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

if(x==a[i])break;

if(i<10)

printf("position:%d\n",i);

else printf("Not found!\n",x);

}

34.用选择法对数组a中的整数由小到大进行排序。#include

void sort(int b[],int n) /*加void时必须放在主函数前*/

{

int i,j,t;

for(i=0;i

{

for(j=i+1;j

if(b[i]>b[j])

{

t=b[i];

b[i]=b[j];

b[j]=t;

}

}

}

main() {

int a[]={12,32,51,14,8,95,11,23};

int i;

sort(a,8);

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

printf("%-5d",a[i]);

printf("\n");

}

main()

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

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

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

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

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

if(a[i]>a[i+1])

{t=a[i+1];a[i+1]=a[i];a[i]=t;}

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

printf("%5d",a[i]);

}

35.求数组中最大元素。

#include

sort(int b[],int n)

{

int i,j,t;

for(i=0;i

for(j=i+1;j

if(b[i]>b[j])

{

t=b[i];

b[i]=b[j];

b[j]=t;

}

}

main()

{

int a[]={12,32,51,14,8,95,11,23};

sort(a,8);

printf("The bigest number is:%d",a[7]);

}

36.数组a中已存放了10个由小到大排列的数。现从键

盘输入一个数x,要求删除数组中与其相同的数,并将后续的数依次前移,最后输出剩余的数。

#include"stdio.h"

void main()

{

int x,i,m,a[10]={0,1,2,3,4,5,6,7,8,9};

scanf("%d",&x);

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

{

if(a[i]==x)

m=i;

for(;m<10;m++)

a[m]=a[m+1];

}

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

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

}

37.题目:求一个3*3矩阵对角线元素之和

1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

#define N 4

/* 如果使用的是TC系列编译器则可能需要添加下句*/

/*static void dummyfloat(float *x){ float y; dummyfloat(&y);}*/

main()

{

int i,j,a[N][N],sum=0;

printf("please input rectangle element:\n");

for(i=0;i

for(j=0;j

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

for(i=0;i

for(j=0;j

{

if(j==i||j==N-1-i)

sum=sum+a[i][j];

}

printf("duijiaoxian he is %6.2d",sum);

}

38.题目:有一个已经排好序的数组。现输入一个数,

要求按原来的规律将它插入数组中。

1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int a[11]={1,4,6,9,13,16,19,28,40,100};

int temp1,temp2,number,end,i,j;

printf("original array is:\n");

for(i=0;i<10;i++) printf("%5d",a[i]);

printf("\n");

printf("insert a new number:");

scanf("%d",&number);

end=a[9];

if(number>end)

a[10]=number;

else

{

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

{

if(a[i]>number)

{

temp1=a[i];

a[i]=number;

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

{

temp2=a[j];

a[j]=temp1;

temp1=temp2;

}

break;

}

}

}

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

printf("%6d",a[i]);

}

main()

{static int

a[10]={1,7,8,17,23,24,59,62,101};int i,j,t; scanf("%d",&a[9]);

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

if(a[i]

{t=a[i-1];a[i-1]=a[i];a[i]=t;}

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

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

}

main()

{

static int a[5]={1,4,5,6,7};

int i,t,b;

scanf("%d",&b);

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

{if(b<=a[i])

{t=a[i];a[i]=b;b=t;}

printf("%d ",a[i]);}

printf("%d",b);

}

39.题目:将一个数组逆序输出。

1.程序分析:用第一个与最后一个交换。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

#define N 5

main()

{

int a[N]={9,6,5,4,1},i,temp;

printf("\n original array:\n");

for(i=0;i

printf("%4d",a[i]);

for(i=0;i

{

temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

}

printf("\n sorted array:\n");

for(i=0;i

printf("%4d",a[i]);

}

--------------------------------------------- main()

{int i,b[10];

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

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

for(i=9;i>-1;i--)

printf("%5d",b[i]);

printf("\n");}

40.题目:对10个数进行排序

1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

/*#define 10 10*/

main()

{

int i,j,p,min,tem,a[10];

/*input data*/

printf("please input ten num:\n");

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

{

printf("a[%d]=",i);

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

}

printf("\n");

for(min=0;min<9;min++)

for(j=min+1;j<10;j++)

if(a[min]>a[j])

{

tem=a[j];

a[j]=a[min];

a[min]=tem;

}

/*output data*/

printf("After sorted \n");

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

printf("a[%d]=%d\n",p,a[p]);

}

41.找出一个二位数组中的鞍点,即该位置上的元素

在该行上最大,在该列上最小,也可能没有鞍点。main()

{int a[5][5],b[5],c[5],d[5][5],k=0,l=0;int

i,j;

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

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

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

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

for(j=0;j<5;j++,a[i][j]=d[i][j]);

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

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

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

b[k]=a[i][j+1]=a[i][j];

else

b[k]=a[i][j+1];

}

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

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

{if(a[i][j]<=a[i+1][j])

c[l]=a[i+1][j]=a[i][j];

else

c[l]=a[i+1][j];

}

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

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

if(d[i][j]-b[k]==0)

{if(d[i][j]-c[l]==0)

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

else

printf("d[%d][%d]=%d isnot

andi\n",i,j,d[i][j]);

}

}

42.打印“魔方阵”,所谓魔方阵是指这样的方阵,它

的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为

8 1 6

3 5 7

4 9 2

要求打印出由1~n2的自然数构成的魔方阵。

解:

#include

main()

{int a[16][16],i,j,k,p,m,n;

p=1;

while(p==1) /*要求阶数为1~15的商数*/

{ printf("Enter n(n=1~15):");

scanf("%d",&n);

if((n!=0)&&(n<=15)&&(n%2!=0)) p=0;

}

for(i=1;i<=n;i++) /*初始化*/

for(j=1;j<=n;j++) a[i][j]=0;

j=n/2+1; /*建立魔方阵*/

a[1][j]=1;

for(k=2;k<=n*n;k++)

{ i=i-1;

j=j+1;

if((i<1)&&(j>n))

{ i=i+2;

j=j-1;

}

else

{if(i<1) i=n;

if(j>n) j=1;

}

if(a[i][j]==0) a[i][j]=k;

else

{ i=i+2;

j=j-1;

a[i][j]=k;

}

}

for(i=1;i<=n;i++) /*输出魔方阵*/

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

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

printf("\n");

}

}

43.有个15数按由小到大顺序存放在一个数组中,输

入一个数,要求用折半查找法找出该数组中第

几个元素的值。如果该数不在数组中,则打印出"

无此数"

#include"math.h"

main()

{static int

i,j,m,a[15]={1,4,9,13,21,34,55,89,144,233,377 ,570,671,703,812};

scanf("%d",&m);

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

printf("%4d",a[j]);

printf("\n");

i=7;

while(fabs(i-7)<8)

{if(m

{if(a[i]-m==0)

{printf("it is at (%d)\n",i+1);break;}i--;} else if(m>a[7])

{if(a[i]-m==0)

{printf("it is at (%d)\n",i+1);break;}i++;} else

printf("8\n");

}

if(fabs(i-7)-8==0)

printf("There is not\n");

}

44.从键盘输入5个数,输出最大数和最小数。

#include"stdio.h"

void main()

{

int max,min,a[6],i,j,k;

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

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

max=a[1];

min=a[5];

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

{if(max

max=a[j];

}

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

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

{if(min>a[k])

min=a[k];

}

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

}

45.编写程序,计算200到700之间所有能被11整除的

奇数之和。

#include"stdio.h"

void main()

{

int n,sum=0;

for(n=200;n<=700;n++)

{if(n%11==0&&n%2==1)

{

printf("%-6d",n);

sum+=n;

}

}

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

}

46.请把输入的十进制长整型数以十六进制的形式输

出。

#include"stdio.h"

void main()

{

char

b[16]={'0','1','2','3','4','5','6','7','8','9 ','A','B','C','D','E','F'};

int c[64],d,i=0,base=16;

long n;

printf("enter a number:\n");

scanf("%ld",&n);

do{

c[i]=n%base;

i++;

n=n/base;

}

while(n!=0);

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

{

d=c[i];

printf("%c",b[d]);

}printf("H");

}

47.一个素数加上1000以后是37的倍数,输出满足这

个条件的最小的素数。

#include

#include

int prime(int x)

{

static int a;

static int b;

a=2;

b=sqrt(x);

if (x%a&&a<=b) {a++;return (prime(a));}

else if (x%a==0) return 0;

else return 1;

}

int main(int argc, char* argv[])

{

int i;

for (i=1036; ; i+=37)

if (prime(i-1000)) {

printf("%d",i-1000);

break;

}

return 0;

}

48.计算1到500之间的全部“同构数”之和。所谓“同

构数”是指一个数,它出现在它的平方数的右端。

如6的平方数是36,6出现在36的右端,6就是同构数。(提示1也是同构数)

#include"stdio.h"

void main()

{

int i,sum=0;

long j;

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

{

j=i*i;

if(i==j%10)

{

printf("%5d,",i);

sum+=i;

}

}

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

{

j=i*i;

if(i==j%100)

{

printf("%5d,",i);

sum+=i;

}

}

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

{

j=i*i;

if(i==j%1000)

{

printf("%5d,",i);

sum+=i;

}

}

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

printf("\n");

}

49.输入n个整数,将其中最小的数与第一个数对换,

把最大的数与最后一个数对换。

/* Note:Your choice is C IDE */

#include"stdio.h"

#define n 10

void main()

{

int i,max,min,a[n];

for(i=0;i

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

max=a[0];

min=a[n-1];

for(i=0;i

{

if(min>a[i])

min=a[i];

if(max

max=a[i];

}

a[0]=max;

a[n-1]=min;

for(i=0;i

printf("%5d",a[i]);

}

50.从键盘输入三个整数x,y,z,输出其中最小数。

#include"stdio.h"

void main()

{

int x,y,z,min=0;

scanf("%d,%d,%d",&x,&y,&z);

if(x>y)

min=y;

else

min=x;

if(min>z)

min=z;

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

}

51.用指针指向三个整数型存储单元,输入三个整数,

并输出其中最小的数。

#include

main()

{

int*a,*b,*c,*min;

a=(int*)malloc(sizeof(int));

b=(int*)malloc(sizeof(int));

c=(int*)malloc(sizeof(int));

min=(int*)malloc(sizeof(int)); printf("输入三个整数:");

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

*min=*a;

if(*a>*b)

*min=*b;

if(*min>*c)

*min=*c;

printf("输出最小整数:%d\n",*min);

}

52.有1、2、3、4个数字,能组成多少个互不相同且

无重复数字的三位数?都是多少?

1.程序分析:可填在百位、十位、个位的数字都是1、

2、3、4。组成所有的排列后再去掉不满足条件的排列。

2.程序源代码:

/* Note:Your choice is C IDE */

#include"stdio.h"

void main()

{

int i,j,k;

printf("\n");

for(i=1;i<5;i++) /*以下为三重循环*/

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

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

{

if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/

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

}

}

53.一个整数,它加上100后是一个完全平方数,再

加上168又是一个完全平方数,请问该数是多

少?

1.程序分析:在10万以内判断,先将该数加上100

后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:2.程序源代码:

#include"math.h"

#include"stdio.h"

#include"conio.h"

main()

{

long int i,x,y,z;

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

{

x=sqrt(i+100); /*x为加上100后开方后的结果*/

y=sqrt(i+268); /*y为再加上168后开方后的结果*/

if(x*x==i+100&&y*y==i+268) /*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/ printf("\n%ld\n",i);

}

}

54.题目:输入三个整数x,y,z,请把这三个数由小到

大输出。

1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int x,y,z,t;

scanf("%d%d%d",&x,&y,&z);

if (x>y)

{t=x;x=y;y=t;}/*交换x,y的值*/

if(x>z)

{t=z;z=x;x=t;}/*交换x,z的值*/

if(y>z)

{t=y;y=z;z=t;}/*交换z,y的值*/

printf("small to big: %d %d %d\n",x,y,z);

}

55.用筛法求100之内的素数。

#include"math.h"

main()

{int i,j,a[100];

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

{ a[i]=i;

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

{if(j

if(a[i]%j==0)

break;

if(a[i]-j==0)

printf("%5d",a[i]);

}

}

printf("\n");

}

56.题目:打印出所有的“水仙花数”,所谓“水仙花

数”是指一个三位数,其各位数字立方和等于该

数本身。例如:153是一个“水仙花数”,因为153=1

的三次方+5的三次方+3的三次方。

1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

2.程序源代码:#include"stdio.h"

#include"conio.h"

main()

{

int i,j,k,n;

printf("'water flower'number is:");

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

{

i=n/100;/*分解出百位*/

j=n/10%10;/*分解出十位*/

k=n%10;/*分解出个位*/

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

printf("%-5d",n);

}

}

---------------------------------------------#include"math.h"

main()

{int x=100,a,b,c;

while(x>=100&&x<1000)

{a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b; if(x==(pow(a,3)+pow(b,3)+pow(c,3)))

printf("%5d",x);x++;}

}

57.题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是

一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

1.程序分析:关键是计算出每一项的值。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int a,n,count=1;

long int sn=0,tn=0;

printf("please input a and n\n");

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

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

while(count<=n)

{

tn=tn+a;

sn=sn+tn;

a=a*10;

++count;

}

printf("a+aa+...=%ld\n",sn);

}

58.题目:一个数如果恰好等于它的因子之和,这个

数就称为“完数”。例如6=1+2+3.编程找出1000

以内的所有完数。

main()

{int m,i,j,s;

for(m=6;m<10000;m++)

{s=1;

for(i=2;i

if(m%i==0) s=s+i;

if(m-s==0)

{printf("%5d its fastors are 1

",m);for(j=2;j

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

}

}

--------------------------------------------- main()

{int m,i,j,s;

for(m=6;m<1000;m++)

{s=m-1;

for(i=2;i

if(m%i==0) s=s-i;

if(s==0)

{printf("%5d its fastors are 1

",m);for(j=2;j

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

}

}

59.题目:给一个不多于5位的正整数,要求:一、

求它是几位数,二、逆序打印出各位数字。

1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main( )

{

long a,b,c,d,e,x;

scanf("%ld",&x);

a=x/10000;/*分解出万位*/

b=x%10000/1000;/*分解出千位*/

c=x%1000/100;/*分解出百位*/

d=x%100/10;/*分解出十位*/

e=x%10;/*分解出个位*/

if (a!=0) printf("there are

5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);

else if (b!=0) printf("there are

4, %ld %ld %ld %ld\n",e,d,c,b);

else if (c!=0) printf(" there are

3,%ld %ld %ld\n",e,d,c);

else if (d!=0) printf("there are 2, %ld %ld\n",e,d);

else if (e!=0) printf(" there are 1,%ld\n",e);

}

8.11写一函数用起泡法对输入的个字符按由小到大的顺序排列。

int paixu(x)

int x[];

{int i,j,t;

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

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

if(x[i]>x[i+1]) {t=x[i+1];x[i+1]=x[i];x[i]=t;} }

main()

{int y[10];int i;

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

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

paixu(y);

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

printf("%5d",y[i]);

printf("\n");

}

60.题目:输出9*9口诀。

1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int i,j,result;

printf("\n");

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

{

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

{

result=i*j;

printf("%d*%d=%-3d",i,j,result); /*-3d表示左对齐,占3位*/

}

printf("\n"); /*每一行后换行*/

}

}

61.题目:判断101-200之间有多少个素数,并输出

所有素数。

1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

#include"math.h"

main()

{

int m,i,k,h=0,leap=1;

printf("\n");

for(m=101;m<=200;m++)

{

k=sqrt(m+1);

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

if(m%i==0)

{

leap=0;

break;

}

if(leap)

{

printf("%-4d",m);

h++;

if(h%10==0)

printf("\n");

}

leap=1;

}

printf("\nThe total is %d",h);

}

62.题目:将一个正整数分解质因数。例如:输入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的值,重复执行第一步。

2.程序源代码:

/* zheng int is divided yinshu*/

#include"stdio.h"

#include"conio.h"

main()

{

int n,i;

printf("\nplease input a number:\n");

scanf("%d",&n);

printf("%d=",n);

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

while(n!=i)

{

if(n%i==0)

{

printf("%d*",i);

n=n/i;

}

else

break;

}

printf("%d",n);

}

63.输入两个正整数m和n,求其最大公约数和最小公

倍数。

#include"stdio.h"

#include"conio.h"

main()

{

int a,b,num1,num2,temp;

printf("please input two numbers:\n");

scanf("%d,%d",&num1,&num2);

if(num1

{

temp=num1;

num1=num2;

num2=temp;

}

a=num1;b=num2;

while(b!=0)/*利用辗除法,直到b为0为止*/ {

temp=a%b;

a=b;

b=temp;

}

printf("gongyueshu:%d\n",a);

printf("gongbeishu:%d\n",num1*num2/a);

}

maxyueshu(m,n)

int m,n;

{int i=1,t;

for(;i<=m&&i<=n;i++)

{if(m%i==0&&n%i==0)

t=i;

}

return(t);

}

minbeishu(m,n)

int m,n;

{int j;

if(m>=n) j=m;

else j=n;

for(;!(j%m==0&&j%n==0);j++);

return j;

}

main()

{int a,b,max,min;

printf("enter two number is: ");

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

max=maxyueshu(a,b);

min=minbeishu(a,b);

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

}

64.题目:一个5位数,判断它是不是回文数。即12321

是回文数,个位与万位相同,十位与千位相同。

1.程序分析:同29例

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main( )

{

long ge,shi,qian,wan,x;

scanf("%ld",&x);

wan=x/10000;

qian=x%10000/1000;

shi=x%100/10;

ge=x%10;

if(ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/

printf("this number is a huiwen\n");

else

printf("this number is not a huiwen\n"); }

65.求方程ax2+bx+c=0的根,用三个函数分别求当

b2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。

#include"math.h"

float yishigen(m,n,k)

float m,n,k;

{float x1,x2;

x1=(-n+sqrt(k))/(2*m);

x2=(-n-sqrt(k))/(2*m);

printf("two shigen is x1=%.3f and

x2=%.3f\n",x1,x2);

}

float denggen(m,n)

float m,n;

{float x; x=-n/(2*m);

printf("denggen is x=%.3f\n",x);

}

float xugen(m,n,k)

float m,n,k;

{float x,y;

x=-n/(2*m);

y=sqrt(-k)/(2*m);

printf("two xugen is x1=%.3f+%.3fi and

x2=%.3f-%.3fi\n",x,y,x,y);

}

main()

{float a,b,c,q;

printf("input a b c is ");

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

printf("\n");

q=b*b-4*a*c;

if(q>0) yishigen(a,b,q);

else if(q==0) denggen(a,b);

else xugen(a,b,q);

}

66.用递归方法求n阶勒让德多项式的值递归公式为勒让德多项式:P0(1)=1,n=0;P1(x)=x, n=1;P n(x)=((2n-1)*x-P n-1(x)-(n-1)*P n-2(x))/n, n>=1.

float p(x0,n)

int n;float x0;

{float y;

if(n==0||n==1) if(n==1) y=x0;else y=1;

else

y=((2*n-1)*x0*p(x0,n-1)-(n-1)*p(x0,n-2))/n; return(y);

}

main()

{float x,y0;int a,i;

scanf("%f,%d",&x,&a);

y0=p(x,a);

printf("y0=%.3f\n",y0);

}

67.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13,……。

求出这个数列的前20项之和。

main()

{int i=1,n;double t,x=1,y=2,s,sum=0;

scanf("%ld",&n);

while(i<=n)

{s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}

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

}

68.用迭代法求。求平方根的迭代公

式:x n+1=1/2(x n+a/x n),要求前后两次求出的得差的

绝对值少于0.00001。

#include"math.h"

main()

{float x0,x1,a;

scanf("%f",&a);

x1=a/2;

do

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

while(fabs(x0-x1)>=0.00001);

printf("%.3f\n",x1);

}

69.用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近

的根..

#include"math.h"

main()

{double x,y;x=1.5;

do{y=2*x*x*x-4*x*x+3*x-6;

x=x-y/(6*x*x-8*x+3);}

while(y!=0);

printf("x=%.3f\n",x);

}

70.用二分法求方程在(-10,10)之间的根

2x3-4x2+3x-6=0.

main()

{double x1,x2,y1,y2;x1=-10;x2=10;

do{y1=2*x1*x1*x1-4*x1*x1+3*x1-6;

x1=x1-y1/(6*x1*x1-8*x1+3);}

while(y1!=0);

do

{y2=2*x2*x2*x2-4*x2*x2+3*x2-6;

x2=x2-y2/(6*x2*x2-8*x2+3);}

while(y2!=0);

printf("x1=%.3f,x2=%.3f\n",x1,x2);

}

71.题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,

21/13...求出这个数列的前20项之和。

1.程序分析:请抓住分子与分母的变化规律。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int n,t,number=20;

float a=2,b=1,s=0;

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

{

s=s+a/b;

t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/

}

printf("sum is %9.6f\n",s);

}

72..题目:求1+2!+3!+...+20!的和

1.程序分析:此程序只是把累加变成了累乘。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

float n,s=0,t=1;

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

{

t*=n;

s+=t;

}

printf("1+2!+3!...+20!=%e\n",s);

}

73..题目:利用递归方法求5!。

1.程序分析:递归公式:fn=fn_1*4!

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int i;

int fact();

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

printf("\40:%d!=%d\n",i,fact(i));

getch();

}

int fact(j)

int j;

{

int sum;

if(j==0)

sum=1;

else

sum=j*fact(j-1);

return sum;

}

74.检验输入的三条边值能否构成三角形,能否构成

直角三角形。

#include

main()

{

int i,s[3];

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

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

switch(judge(s))

{

case 0:printf("wrong input");break;

case 1:printf("special kind and");

case 2:printf(" right input");

}

}

int judge(int*s)

{

int i;

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

{

if(s[i]<0||s[i%3]+s[(i+1)%3]<=s[(i+2)%3]) return(0);

if(s[i%3]*s[i%3]+s[(i+1)%3]*s[(i+1)%3]==s[ (i+2)%3]*s[(i+2)%3])

return(1);

}

return(2);

}

75.编程序对名为“CCW.txt”的磁盘文件中的“@”

之前的所有字符加密,加密方法是每个字节的内容减10.

/*有一个警告 */

#include"stdio.h"

void main()

{

FILE *fp;

char c;

if((fp=fopen("ccw.txt","r+"))==NULL)

{

printf("Can not open file!\n");

exit(0);

}

while(!feof(fp))

if((c=fgetc(fp))!="@")

{

c=c-10;

fseek(fp,-1L,1);

fputc(c,fp);

fseek(fp,0L,1);

}

else

break;

fclose(fp);

}

76.企业发放的奖金根据利润提成。利润(I)低于或等

于10万元时,奖金可提10%;利润高于10万

元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;

40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

long int i;

int

bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

scanf("%ld",&i);

bonus1=100000*0.1;

bonus2=bonus1+100000*0.075;

bonus4=bonus2+200000*0.05;

bonus6=bonus4+200000*0.03;

bonus10=bonus6+400000*0.015;

if(i<=100000)

bonus=i*0.1;

else if(i<=200000)

bonus=bonus1+(i-100000)*0.075;

else if(i<=400000)

bonus=bonus2+(i-200000)*0.05;

else if(i<=600000)

bonus=bonus4+(i-400000)*0.03;

else if(i<=1000000)

bonus=bonus6+(i-600000)*0.015;

else

bonus=bonus10+(i-1000000)*0.01;

printf("bonus=%d",bonus);

}

77.输入某年某月某日,判断这一天是这一年的第几

天?

1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int day,month,year,sum,leap;

printf("\nplease input year,month,day\n"); scanf("%d,%d,%d",&year,&month,&day);

switch(month) /*先计算某月以前月份的总天数*/ {

case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

case 4:sum=90;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

default:printf("data error");break;

}

sum=sum+day; /*再加上某天的天数*/

if(year%400==0||(year%4==0&&year%100!=0)) /*判断是不是闰年*/

leap=1;

else

leap=0;

if(leap==1&&month>2) /*如果是闰年且月份大于2,总天数应该加一天*/

sum++;

printf("It is the %dth day.",sum);

/*getch(); */

}

——————————————————————

int find(x,y,z)

int x,y,z;

{int i,t,s,days=0;

if(x%4==0) t=1;

else t=0;

for(i=1;i

{if(i==2) s=2-t;

else s=0;

days=days+30+i%2-s;

}

days=days+z;

return(days);

}

main()

{int year,month,date,day; scanf("%d %d %d",&year,&month,&date);

day=find(year,month,date);

printf("THE DATE IS THE %dth DAYS\n",day); }

78.题目:古典问题:有一对兔子,从出生后第3个

月起每个月都生一对兔子,小兔子长到第三个月

后每个月又生一对兔子,假如兔子都不死,问每

个月的兔子总数为多少?

1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

long f1,f2;

int i;

f1=f2=1;

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

{

printf("%12ld %12ld",f1,f2);

if(i%2==0) printf("\n"); /*控制输出,每行四个*/

f1=f1+f2; /*前两个月加起来赋值给第三个月*/ f2=f1+f2; /*前两个月加起来赋值给第三个月*/ }

}

79.题目:一球从100米高度自由落下,每次落地后

反跳回原高度的一半;再落下,求它在第10次落

地时,共经过多少米?第10次反弹多高?

1.程序分析:见下面注释

2.程序源代码:

#include"stdio.h"

#include"stdio.h"

main()

{

float sn=100.0,hn=sn/2;

int n;

for(n=2;n<=10;n++)

{

sn=sn+2*hn;/*第n次落地时共经过的米数*/

hn=hn/2; /*第n次反跳高度*/

}

printf("the total of road is %f\n",sn);

printf("the tenth is %f meter\n",hn);

}

-------------------------------------------------------------------- main()

{int i,n;double h=100,s=100;

scanf("%d",&n);

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单片机串口用于中断通讯时,在进行初始化时必须设置的特殊功能寄存器有:

C语言程序设计复习题(专升本)

《C语言程序设计》复习题(专升本) 一、填空题 1、关系操作的特点是操作。 2、按照软件测试的一般步骤,集成测试应在测试之后进行。 3、软件工程三要素包括方法、工具和过程,其中,支持软件开发的各个环节的控制和管理。 4、E-mail地址由用户和域名两部分组成,这两部分的分隔符为。 5、在二维表中,元组的不能再分成更小的数据项。 6、设变量a和b已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式。 7、在DOS环境下,表示打印机的设备文件名为。 8、数据的逻辑结构有线性结构和两大类。 9、顺序存储方法是把逻辑上相邻的结点存储在物理位置的存储单元中。 10、一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的。 11.是C程序的基本单位,一个C程序总是从开始执行。 12.C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或。 13.著名计算机科学家沃思提出的一个公式:数据结构+=程序 14.表达式 !!5的值是______。 15.下列程序段的输出结果是______。 printf("%xn", (0x19 <<1) & 0x17); 16.下列程序段的输出结果是_____。 int k, s; for(k=0, s=0; k<10; k++) if (s>k) break ; else s += k; printf("k=%d s=%d", k, s); 17.下列程序段的输出结果是_____。 #define MIN(x,y) (x)<(y)?(x) : (y)

printf("%d",10*MIN(10,15)); 18.下列程序在运行时可能会出错,原因是______。 # include void main( ) { char *s; gets(s); puts(s); } 19. 表达式1<0<5的值是。 20. 表达式 ~(10>>1^~5) 的值是。 二、选择题 1、以下叙述中正确的是 A. C语言比其他语言高级 B. C语言可以不用编译就能被计算机识别执行 C. C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D. C语言出现的最晚,具有其他语言的一切优点 2、C语言中用于结构化程序设计的三种基本结构是 A.顺序结构、选择结构、循环结构 B. if、switch、break C. for、while、do-while D. if、for、continue 3、在一个C程序中 A.main函数必须出现在所有函数之前 B. main函数可以在任何地方出现 C. main函数必须出现在所有函数之后 D. main函数必须出现在固定位置 4、下列叙述中正确的是 A.C语言中既有逻辑类型也有集合类型 B. C语言中没有逻辑类型但有集合类型 C. C语言中有逻辑类型但没有集合类型 D. C语言中既没有逻辑类型也没有集合类型 5、下列关于C语言用户标识符的叙述中正确的是 A.用户标识符中可以出现在下划线和中划线(减号) B.用户标识符中不可以出现中划线,但可以出现下划线

程序设计练习题

第六章程序设计 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的值为_______。

完整word版单片机C语言应用程序设计第五版马忠梅课后习题答案

第一章单片机由哪几部分组成?、80511可P2P0和个8位并行I/O口(其中8位中央处理器CPU、片内振荡电器及其时钟电路,4,个中断优先级)个中断源(具有2位定时器/计数器,5 用于外部存储器的扩展),2个16 全双工串行口,布尔处理器。单片机有多少个特殊功能寄存器?它们可以分为几组,各完成什么主要功能?、80512 表P7 1-3个特殊功能寄存器,在物理 上是分散在片内各功能部件中,在数218051单片机内部有答:中,以便能使用统一的直接寻址方式80H~FFH学上把它们组织在内部数据存储器地址空间来访问。这些特殊功能寄存器颁 在以下各个功能部件中:主要完;DPH两个8位寄存器组成)PSW、SP、DPTR(由DPL和(1)CPU:ACC、B、成运算和逻辑判断功能;完成中断管理IP、IE;(2)中断系统:完成 定时或者计数功能、TH1;TCOM、TL0、TH0、TL1(3)定时器/计数器:TMOD、口带有可选的纵向拓展I/O完成I/O口功能,其中部分P1P0、、P2、P3(4)并行I/O口:功能。主要完成数据的串行发送和接收SBUF、PCON5)串行口:SCON、(、决定程序执行顺序的寄存器是哪几个?它是几位寄存器?是否为特殊功能寄存器?它的3 内容是什么信息?它的内容是下一条 将要执行的不是特殊功能寄存器,它是16位寄存器,是程序计数器PC,程序的地址的用途是什么?它由哪几个特殊功能寄存器组DPTRDPTR是什么特殊功能寄存器?4、成?位)和8DPL (数据指针低是16位数据指针寄存器,它由两个8位特殊功能寄存器DPTR位地址,作地址寄存器用,可寻址外部16DPTR用于保存DPH(数据指针高8位)组成,数据存储器,也可寻址程序存储器。线?它们和单片机对外的地址总线和数据总线有什么关系?地址的引脚有多少I/O5、8051 总线和数据总线各是多少位?线可以在外扩存储器时分时复根I/OP0口8I/O8051单片机的40个引脚中有32根口线,和P3.6位地址总线,P2口作为高8用作为外部存储器的低8位地址 总线和8位数据总线,位。16位,数据总线为8P3.7分别作为外部存储器的写和读控制线。地址总线单片机堆栈的最大容量不能超过多少字8051、什么是堆栈?堆栈指针SP的作用是什么? 6 节?堆栈是数据寄存器的一部分,这一部分数据的存取是按照先入后出、后入先出的原则进行的。堆栈指针SP在启用堆栈之前是用来决定堆栈的位置。如在8051芯片复位后,SP的值为07H,则决定了堆栈从08H开始设置。修改SP值可以使堆栈设置在内部RAM的其它部分。在堆栈启 用之后,SP指向堆栈顶部,即由SP来决定数据读出和存入堆栈的地址。8051单片机内部用作 数据区的RAM的容量为128个字节,前8个字节要用来作为工作寄存器R0-R7。堆栈可以从08H开始设置直到7FH,共120个字节。但这只是最大可能的容量。一般情况下,内部RAM还要分出一部分作一般的数据区,或者还要用其中的位寻址区来用于位操作,等等。所以,8051 的堆栈区是比较小的,使用时要注意到这个限制。 8、8051内部RAM低128字节可分为几个区域?其中通用寄存器区的字节地址范围为多少?如何实现寄存器组的切换?可位寻址区的字节地址和位地址范围分别为多少? 8051内部RAM的低128字节可以分为通用寄存器区、位寻址区、便签(工作或者堆栈RAM)1 中的个字节。设置PSW区和特殊功能寄存器区。通用寄存器区的地址从00H到1FH共3212816个字节RS1可以切换当前通用寄存器组。位寻址区地址从20H到2FH共位RSO和127. 0到位,占用地址8051单片机对外有几条专用控制线?其功能是什么?9、,高电位有效,当有条专用控制线。它们是复位信号线RST一般的说法是8051单片机有4,低电平有效,当此复位信号从此线输入时,使单片机复位。访问外部存贮器控制信号EA先使用片单片机全部使用外部指令存贮器,而当此控制线为高电平时,控制线为低电平时,1000H(地址为,在4KB范围之外,才使用指令存贮器FFFFH内的4KB指令存贮器(0000H-)和外部地址锁存器允PSEN-FFFFH)。另有两条输出控制:外部程序存贮器的读选通信号。前者是低电平有效,在读外部程 序存贮器时使用。后者是高电平有效,在锁存ALE许信号P0口输出的低8位地址时使用。端必须怎样处理?为什么?10、8031的/EA为有效时,/EA访问内部ROM,当端是访问外部程序

程序设计基础C-题库-1

程序设计基础C-题库 1、计算机语言按照高低级别可分为机器语言、 、 三大类。 答案: 汇编语言 ; 高级语言 ; 2、C语言中源文件的后缀名为 。 答案: *.c;.c ; 解析: 3、在程序中,如果使用printf()函数,应该包含 头文件。 答案: stdio.h ; 解析: 4、在main()函数中,用于返回函数执行结果的是 语句。 答案: return ; 5、C语言程序在Windows平台下经过编译、连接后生成的可执行文件后缀是 。答案: .exe ;

6、C语言并不属于高级语言。 答案:错误 7、计算机语言(Computer Language)是人与计算机之间通信的语言。 答案:正确 8、C语言并不能实现汇编语言的大部分功能。 答案:错误 9、Eclipse工具和Visual Studio工具都可以开发C语言。 答案:正确 10、C语言是UNIX和其衍生版本的主要开发语言。 答案:正确 11、请简述printf()函数的作用。 答案: printf()printf()“Hello, world\n”“\n” 12、请简述C语言中main()函数的作用。 答案: main函数是C程序的入口函数,即程序的执行是从main函数开始 解析: 13、使用DEV-C++开发工具编写一个控制台程序,要求在控制台上输出一句话:“我喜欢C语言”。 答案输入: #include int main() { printf("C");

return 0; } 答案输出: C 14、C语言属于下列哪类计算机语言? A、汇编语言 B、高级语言 C、机器语言 D、以上均不是 答案:B 15、下列关于主函数说法错误的是( ) A、一个C程序中只能包含一个主函数 B、主函数是C程序的入口 C、C程序中可以包含多个主函数 D、主函数只能包含输出语句 答案:CD 16、下列选项中,不属于C语言优点的是 A、不依赖计算机硬件 B、简洁、高效 C、可移植 D、面向对象 答案:D 17、下列选项中,哪一个是多行注释? A、// B、/**/ C、\\ D、以上均不属于 答案:B 18、C语言是一种()的编程语言 A、面向对象 B、面向过程 C、可视化 D、组件导向 答案:B

程序设计题目

程序设计题一:学生信息管理系统 【课题内容】 学生信息的管理是每个学校必须具有的管理功能,主要是对学生的基本情况及学习成绩等方面的管理。该系统模拟一个简单的学生管理系统,要求对文件中所存储的学生数据进行各种常规操作,如:排序、查找、计算、显示等功能。通过此课题,熟练掌握文件、数组、结构体的各种操作,在程序设计中体现一定的算法思想,实现一个简单的学生信息管理系统。 【基本要求】 (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语言程序设计第五版习题答案()

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么它由哪几部分组成 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100;

a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。 #include <> main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** *

专升本C语言历年考试题及答案2

专升本C语言历年考试题及答案一、单项选择题 1. C语言源程序文件经过C编译程序编译连接之后生成一个后缀为__C____的文件。 A、”.c” B、“.obj” C、“.exe” D、“.bas” 2. 以下选项中不正确的整型常量是_C____。 A、 12L B、 -10 C、 1,900 D、 123U 3. 表达式___C___的值是0。 A、3%5 B、3/ C、3/5 D、3<5 4. 表达式 !(x>0||y>0) 等价于__D___。 A、!x>0||!y>0 B、!(x>0)||!(y>0) C、!x>0&&!y>0 D、!(x>0)&&!(y>0) 5. 若变量已正确定义并赋值,表达式__D____不符合C语言语法。 A、4&&3 B、+a C、a=b=5 D、int 6. 若变量已正确定义,执行语句scanf("%d%d%d ",&k1,&k2,&k3);时,___B___是正确的输入。 A、2030,40 B、20 30 40 C、20, 30 40 D、20, 30,40 7. 执行语句printf(” __D____”, 2); 将得到出错信息。 A、%d B、%o C、%x D、%f 8. 设变量定义为“int s[ ]="hello\nworld\n";”,则数组s中有__B____个元素。 A、12 B、13 C、14 D、15 9. 设变量定义为“int a[2]={1,3}, *p=&a[0]+1;”,则*p的值是___B__。 A、2 B、3 C、4 D、&a[0]+1 10. 若变量已正确定义并赋值,表达式 -k++ 等价于__A____。 A、-(k++) B、(-k)++ C、-(k+1) D、-(++k) 11. 在C 语言程序中,在函数内部定义的变量称为__D____。

标准C语言程序设计第五版课后练习题答案

课后练习题答案 Chapter 1 1.1×√×√√×√××√ 1.2b c 1.3ad 1.4semicolon printf math、h \n Chapter 2 2、1 ×√××√√×√××√× 2、2 typedef 255 external const Chapter 3 3、1 ×√××√√×××√√√ 3、2 integer modula 6 logical sizeof paratheses typeconversion precedence 3、3 F F T F F F 3、4 F T T T F 3、5 (b) (c) 3、6 0 -2 7 10、25 false 3 3 1 3、10 0 1 1 1 1 3、11 d } 100 3、12 110 111 3、13 1 3、14 200 3、15 x<=y 3、16 TRUE 3、19 2 1 4 3、20 -40 40 Chapter 4 4、1 ×√√√√√××√√√× 4、2 %hd %x ctype、h %l %*d [^] blank 6 - %e 4、4 (a) scanf(“%d %c %d”, &a, &b, &c); (b)scanf(“%d %f %s”, &a, &b, &c); (c) scanf(“%d-%d-%d”, &a, &b, &c); (d) scanf(“%d %s %d”, &a, &b, &c);

4、5 (a)10x1、230000 (b)1234x 1、23 (c)1234 456、000000 (d) “123、40 ” (e) 1020 1222(乱码) 4、7 (a)1988 x (b)乱码 (c)120 乱码 (d)乱码 x 4、8 (a)1275 -23 5、740000 (b) 1275 -235、740000 (c) 0 0、000000 (d) 1275xxxx-235、74 (e)Cambridge (f)1275 Cambridge 4、10 1988 无无 Chapter 5 5、1 √×√××××××√ 5、2 && switch break if-else x=y 5、4 (a)x = 2; y = 0; (b) x = 1; y = 0; 5、5 (a) if (grade <= 59) if (grade >= 50) second = second + 1; (b) if (number > 100) printf(“out of range”); else if (number < 0) printf(“out of range”); else sum = sum + number; (c) if (T > 200) printf(“admitted”); else if (M > 60) {if (M > 60) printf(“admitted”);} else printf(“not admitted”); 5、6 F T F T 5、8 (a) x > 10 (b) (x != 10)||(y ! = 5) || (z >= 0) (c) (x + y != z) || (z > 5) (d) (x > 5) || (y != 10) || (z >= 5) 5、9 (a) x = 5; y = 10; z = 1 (b) x = 5; y = 10; z = 1 (c) x = 5; y = 0; z =0 (d) 无变化 5、10 (a) x= 0; y = 2; z = 0; (b) x = 1; y = 2; z = 0; 5、12 8 5、13 Delhi Bangalore END 5、14 2 4 4 8 5、15 0 0 2 5、16 25 5、17 Number is negative 5、18 ABC

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

湖北师范学院2010年专升本《C语言程序设计》试卷

湖北师范学院2010年“专升本”招生考试 《C语言程序设计》试题 一、选择题(本题共20小题,每题2分,共40分) 1.以下不合法的用户标识符是()。A)S2_KEY B)Int C) 4s D)_char 2.设有 int x=11; 则表达式 (++x)%3 的值是()。A)0 B)1 C)2 D)3 3.C语言源程序名的后缀是()。 A).exe B).cp C).obj D).c 4.若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是()。 A)scanf("%d",a,b,c); B)scanf("%d%d%d",a,b,c); C)scanf("%d",p); D)scanf("%d",&p); 5.C语言中运算对象必须是整型的运算符是()。 A) %= B)/C) =D) 〈= 6.若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是()。A)a[0][4] B)a[0][3] C)a[1][4] D)a[1][3] 7.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是 A)#define N 10 Int a[N]B)#define n 5 Int a[2*n]C)int a[5+5]D)int n=10,a[n] 8.语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是()。(说明:'\b'是退格符) A)re'hi'you B)abre'hi'y\bou C)a\bre\'hi\'y\bou D)a\bre\'hi\'y\\\bou 9.下列程序执行后的输出结果是()。 A)A B) B C) F D) G void main() { int x='f'; printf("%c \n",'A'+(x-'a'+1)); } 10.若变量已正确定义,有以下程序段

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语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

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

C语言程序设计-----阅读程序题库及答案 集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-

阅读程序题 【】以下程序的输出结果是。 main(D ) { float a; printf("%g",a); } A) +00 B) C) D) 0 【】下面程序的输出结果是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 【】以下程序的输出结果是___B_。 main() { unsigned int n; int i=-521; n=i; printf("n=%u\n",n); }s",s); } A) a book! B) a book!<四个空格》 C) a bo D) 格式描述错误,输出不确定

【】下面程序的输出结果是____。 main() { int a,b; scanf("%2d%3d",&a,&b); printf("a=%d b=%d\n",a,b); } A) a=12 b=34 B) a=123 b=45 C) a=12 b=345 D) 语句右错误 【】以下程序段的输出结果是。 int a=10,b=50,c=30; if(a>b) a=b; b=c; c=a; printf("a=%d b=%d c=%d\n",a,b,c);

A) a=10 b=50 c=10 B) a=10 b=30 c=10 C) a=50 b=30 c=10 D) a=50 b=30 c=50 【】以下程序的输出结果是。 main() { int a=0,b=1,c=0,d=20; if(a) d=d-10; else if(!b) if(!c) d=15; else d=25; printf("d=%d\n",d); } A) d=10 B) d=15 C) d=20 D) d=25 【】下面程序的输出结果为。 main()

最新专升本c语言程序设计模拟试卷资料

计算机科学与技术专业《基础知识》模拟试卷(考试时间150分钟,满 分300分,共三部分) 第一部分 C语言程序设计(共100分) 一、单项选择题(本大题共30小题,每小题2分,共60分) 1. 下列各选项中,均是合法有效的标识符的是【】 A. 3day B.lower C.day_3 D.ab Sum _days abcde student_name _of lotus_1_2_3 default M.D.john 2. 若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是 A.A%2==1 B.!(A%2==0) C.!(A%2) D.A%2 3. 下列程序的输出结果是【】 #include void main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++;b++; break; case 3: a++;b++; break; } printf(“%d,%d\n”,a,b); } A.1,1 B.2,1 C.1,0 D.2,2 4. 以下关于switch语句和break语句的描述中,只有正确的是【】 A.在switch语句中必须使用break语句 B.在switch语句中,可以根据需要使用或不使用break语句

D.break语句是switch语句的一部分 5. 下面程序的输出是【】。 main() { int x=0x23; printf(“%d\n”,- -x); } A.18 B.19 C.34 D.35 6. 下列函数的输出结果是【】 #include int f1(int xb) { extern int xa; return (xa * xb); } void main(void) { extern int xb; int xa=5; printf(“xa=%d,xb=%d,result=%d”,xa,xb,f1(xa)); return 0; } int xa=3,xb=4; A. 3,4,12 B. 5,4,20 C. 5,4,15 D. 3,4,15 7. c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是 A. 地址传递 B. 由实参传给形参,再由形参传回给实参 C. 单向值传递 D. 由用户指定传递方式 8. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其原因是【】void main() { int *p,a; p=&a; scanf(“%d”,*p);

完整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就是一个完全数。

2020年普通专升本《C语言程序设计》考试大纲

2020 年普通专升本《C 语言程序设计》考试大纲 本考试的目的是选拔部分高职高专毕业生进入本校计算机科学与技术专业本科阶段学习,考查考生是否具有综合运用 C 语言编程解决实际问题的能力以及学生对算法和编程基础知识的掌握程度,既测试学生的综合能力,也测试学生的基础知识。 一、考试科目名称:《C 语言程序设计》 二、考试方式:笔试、闭卷 三、考试时间:90 分钟 四、试卷结构:总分100 分 (一)单项选择题:15 题(每题 2 分,共30 分) (二)判断题:15 题(每题 2 分,共30 分) (三)简答题:4 题(每题 5 分,共20 分) (四)程序设计题:3 题(第一、二小题每题6 分,第三小题 8 分,共20 分) 五、考试的基本要求 了解高级程序设计语言的特点,熟练掌握结构化程序设计的方法,了解常用C 语言输入/输出语句、一维数组等各项语法的正确使用方法,并能进行程序的调试和纠错。 六、考试范围 第一章为什么要学C语言 了解C 语言的发展及其特点;掌握C 语言程序的结构;了 解 C 语言的特点。 第二章 C 数据类型 掌握 C 语言数据类型分类,掌握如何定义各种数据类型的

变量,以及他们的赋值方法;掌握常量与变量区别;掌握赋值运算符的使用方法。 第三章简单的算数运算和表达式 掌握算术运算符和运算表达式,以及符合赋值运算符的计算表;重点掌握是自增(+ +)和自减(--)运算符的使用。 第四章键盘输入和屏幕输出 掌握单个字符的输入输出;掌握数据的格式化屏幕输出;掌握数据的格式化键盘输入。 第五章选择结构程序设计 了解基本的算法概念及描述方法;掌握关系运算符和关系表达式;掌握单分支控制的条件语句、双分支控制的条件语句以及多分支选择的控制语句的使用。 第六章循环控制结构 掌握循环结构与循环语句的基本组成;掌握计数控制的循环结构;掌握条件控制的循环结构;掌握循环的嵌套使用方法。 第七章函数 掌握函数的分类和定义;掌握向函数传递值和从函数返回值的方法;了解模块化程序设计的基本原则。 第八章数组 掌握数组的概念及分类;掌握一维数组的定义和初始化。 七、参考教材 《C 语言程序设计》(第3 版),苏小红、王宇颖、孙志岗等编著,高等教育出版社。

相关文档
相关文档 最新文档