c语言编程题目汇总.docx

上传人:b****4 文档编号:12096774 上传时间:2023-04-17 格式:DOCX 页数:47 大小:27.64KB
下载 相关 举报
c语言编程题目汇总.docx_第1页
第1页 / 共47页
c语言编程题目汇总.docx_第2页
第2页 / 共47页
c语言编程题目汇总.docx_第3页
第3页 / 共47页
c语言编程题目汇总.docx_第4页
第4页 / 共47页
c语言编程题目汇总.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

c语言编程题目汇总.docx

《c语言编程题目汇总.docx》由会员分享,可在线阅读,更多相关《c语言编程题目汇总.docx(47页珍藏版)》请在冰豆网上搜索。

c语言编程题目汇总.docx

c语言编程题目汇总

形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放

constfloatpi=3.;在整常量后加字母l或L,

认为它是longint型常量

实型常量的类型

默认double型

在实型常量后加字母f或F,

认为它是float型

floata=567.789;printf("%e",a);

强制转换得到所需类型的中间变量,原变量类型不变

赋值转换规则:

使赋值号右边表达式值自动转换成其左边变

量的类型

#include

#include

#include

voidmain()

{intmagic,guess;

srand(time(NULL));

magic=rand()%100+1;

printf("Enteryourguess:

");

scanf("%d",&guess);

if(guess==magic)

printf("**Right**\n");

else

printf("**Wrong**\n");

printf("Themagicnumberis%d,haha.\n",magic);

}

对于迭加,若分母规律不明显时,应考虑分子

初始化时不允许连等

若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换

#include

#include

main()

{chara[10][20],t[20];

inti,j,k;

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

gets(a[i]);

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

{k=i;

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

if((strcmp(a[k],a[j]))<0)k=j;

if(k!

=i)strcpy(t,a[k]),strcpy(a[k],a[i]),strcpy(a[i],t);

}

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

puts(a[i]);

}

 

试题查看

标题:

3.二进制文件操作

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

已知一个文本文件中存放了10个整形的数据,将它们以二进制数据的形式存入另一个文件。

输入:

存放了10个整形的数据的文本文件。

输出:

二进制数据文件。

输入样例:

E:

\\DATA\\72\\f0.txt

E:

\\DATA\\72\\result.dat

输出样例:

23456778453212569956

提示:

部分代码如下:

intmain(void)

{

inta[10],i=0;

charfilename1[80],filename2[80];

FILE*fp1,*fp2;

/******************/

/*在此编写代码*/

/******************/

/*验证结果的代码,请不要改动*/

if((fp1=fopen(filename2,"rb"))==NULL)

{

printf("Resultfileopenerror!

\n");

exit

(1);

}

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

{

fread(&a[i],sizeof(int),1,fp1);/*读出数据*/

}

if(fclose(fp1))

{

printf("Resultfilecloseerror!

\n");

exit

(1);

}

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

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

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

return0;

}

来源:

#include

#include

#include

main()

{

inta[10],i=0;

charfilename1[80],filename2[80];

FILE*fp1,*fp2;

/******************/

gets(filename1);

gets(filename2);

if(!

(fp2=fopen(filename1,"r")))

{printf("Inputfileopenerror!

\n");

exit

(1);

}

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

fscanf(fp2,"%d",&a[i]);//当有空格和制表符时,自动终止

fclose(fp2);

if(!

(fp1=fopen(filename2,"wb")))

{printf("Inputfileopenerror!

\n");

exit

(1);

}

fwrite(a,sizeof(int),10,fp1);

fclose(fp1);

/******************/

/*验证结果的代码,请不要改动*/

if((fp1=fopen(filename2,"rb"))==NULL)

{

printf("Resultfileopenerror!

\n");

exit

(1);

}

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

{

fread(&a[i],sizeof(int),1,fp1);/*读出数据*/

}

if(fclose(fp1))

{

printf("Resultfilecloseerror!

\n");

exit

(1);

}

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

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

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

return0;

}

试题查看

标题:

2.数据文件

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

已知一个文件中存放了10个整型数据,将他们排序后存入另一个文件。

输入:

存放了10个整型数据的二进制数据文件名(包含全路径)

输出:

排序后的数据,并将其存入结果数据文件中。

输入样例:

E:

\\DATA\\71\\f0.dat

E:

\\DATA\\71\\result.dat

输出样例:

3439496571759193455723

提示:

部分代码如下:

intmain(void)

{

inta[10],temp=0,i=0,j=0,k=0;

charfilename1[80],filename2[80];

FILE*fp1,*fp2;

/******************/

/*在此编写代码*/

/******************/

/*验证结果的代码,请不要改动*/

if((fp1=fopen(filename2,"rb"))==NULL)

{

printf("Resultfileopenerror!

\n");

exit

(1);

}

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

{

fread(&a[i],sizeof(int),1,fp1);/*读出数据*/

}

if(fclose(fp1))

{

printf("Resultfilecloseerror!

\n");

exit

(1);

}

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

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

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

return0;

}

来源:

#include

#include

#include

main()

{

inta[10],temp=0,i=0,j=0,k=0;

charfilename1[80],filename2[80];

FILE*fp1,*fp2;

/******************/

gets(filename1);

gets(filename2);

if(!

(fp2=fopen(filename1,"rb")))

{printf("Fileopenerror!

\n");

exit

(1);

}

fread(a,sizeof(int),10,fp2);

fclose(fp2);

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

{k=i;

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

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

if(k!

=i)temp=a[k],a[k]=a[i],a[i]=temp;

}//排序

if(!

(fp1=fopen(filename2,"wb")))

{printf("Fileopenerror!

\n");

exit

(1);

}

fwrite(a,sizeof(int),10,fp1);

fclose(fp1);

/******************/

/*验证结果的代码,请不要改动*/

if((fp1=fopen(filename2,"rb"))==NULL)

{

printf("Resultfileopenerror!

\n");

exit

(1);

}

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

{

fread(&a[i],sizeof(int),1,fp1);/*读出数据*/

}

if(fclose(fp1))

{

printf("Resultfilecloseerror!

\n");

exit

(1);

}

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

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

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

return0;

}

试题查看

标题:

1.文本文件中字符个数统计

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

统计一个文本文件中字符的个数。

输入:

文本文件名称(包含全路径)

输出:

文本文件中字符的个数。

输入样例:

E:

\\DATA\\70\\f1.txt

输出样例:

16

提示:

来源:

#include

#include

main()

{chara[20],x;

intcount=0;

FILE*fp;

gets(a);

if((fp=fopen(a,"r"))==NULL)

{printf("Resultfileopenerror!

\n");

exit

(1);}

while((x=fgetc(fp))!

=EOF)

count++;

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

}

试题查看

标题:

3.电话薄管理程序设计

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

1.编写手机电话薄管理程序,用结构体实现下列功能:

(1)手机电话薄含有姓名、宅电、手机3项内容,建立含有上述信息的电话簿。

(2)输入姓名,查找此人的号码。

(3)插入某人的号码。

(4)输入姓名,删除某人的号码。

(5)将以上功能分别用子函数实现,编写主函数,可以根据用户的需要,调用相应的子函数。

建议用结构体完成。

输入:

操作码

输出:

处理后的数据

输入样例:

输出样例:

提示:

1、程序主函数如下所示,请认真理解,不要更改代码。

intmain(void)/*主函数*/

{

intk;

do

{

printf("0:

exit\n");/*打印菜单项*/

printf("1:

creat\n");

printf("2:

search\n");

printf("3:

insert\n");

printf("4:

delete\n");

printf("5:

output\n");

printf("pleaseselect:

");

scanf("%d",&k);/*输入选择项*/

switch(k)

{

case0:

exit(0);/*退出函数*/

case1:

creat();

break;

case2:

search();

break;

case3:

insert();

break;

case4:

delete();

break;

case5:

output();

break;/*调用子函数*/

default:

exit(0);

}

}

while

(1);

return0;

}

2、根据主函数,设计相应函数完成指定功能。

3、create时,可用while

(1)循环连续创建,当输入'*'号时创建结束。

4、索引关键字为姓名。

来源:

#include

#include

#include

structstud

{

charname[20];

chartele[13];

charphone[13];

};

structstuda[10];

intn=0;

voidcreat()

{inti=0;

while

(1)

{

scanf("%s",a[i].name);

if(strcmp(a[i].name,"*")==0)

break;

scanf("%s%s",a[i].tele,a[i].phone);

//printf("%s%s%s\n",a[i].name,a[i].tele,a[i].phone);

i++;

}

n=i;

}

voidsearch()

{charnam[10];

inti;

scanf("%s",nam);

for(i=0;i

if(strcmp(a[i].name,nam)==0)break;

if(i

elseprintf("notfound");

}

voidinsert()

{

scanf("%s",a[n].name);

scanf("%s%s",a[n].tele,a[n].phone);

n++;

}

voiddelete()

{inti,j;intx=1;

charnam[10];

scanf("%s",nam);

for(i=0;i

if(strcmp(a[i].name,nam)==0)

{for(j=i;j

a[j]=a[j+1];x=0;

break;

}

if(x)printf("notfound");

n--;

}

voidoutput()

{inti;

for(i=0;i

printf("%s%s%s\n",a[i].name,a[i].tele,a[i].phone);

}

intmain(void)/*主函数*/

{

intk;

do

{

printf("0:

exit\n");/*打印菜单项*/

printf("1:

creat\n");

printf("2:

search\n");

printf("3:

insert\n");

printf("4:

delete\n");

printf("5:

output\n");

printf("pleaseselect:

");

scanf("%d",&k);/*输入选择项*/

switch(k)

{

case0:

exit(0);/*退出函数*/

case1:

creat();

break;

case2:

search();

break;

case3:

insert();

break;

case4:

delete();

break;

case5:

output();

break;/*调用子函数*/

default:

exit(0);

}

}

while

(1);

return0;

}

试题查看

标题:

2.结构体数组的定义与引用

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

定义一个职工结构体数组,从键盘输入5位职工的信息,打印出最高的工资。

输入:

从键盘输入5位职工的信息(4个数据,每个占一行,工资有两位小数)。

输出:

打印出最高的工资。

输入样例:

liuxin

11

1234.23

liyixin

11

5234.24

liuxin

11

1244.25

liuxin

11

1284.26

liuxin

11

1232.27

输出样例:

5234.24

提示:

来源:

#include

#include

structm

{chara[20];

charb[20];

intg;

floatf;

}st[5];

main()

{inti;floatmax;

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

{gets(st[i].a);

gets(st[i].b);

scanf("%d",&st[i].g);

scanf("%f%*c",&st[i].f);//跳过回车键,如果不跳过,会把回车键当做字符串接收到下一个结构体变量中

}

max=st[0].f;

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

if(st[i].f>max)max=st[i].f;

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

}//结构数组,求工资最值

试题查看

标题:

5.偶数位清零

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

从键盘任意输入整数a,将其偶数位清零,其他位保留。

输入:

整数a。

输出:

偶数位清零,其他位保留后的数。

输入样例:

0XFFFF

输出样例:

5555<--十六进制

提示:

来源:

#include

main()

{inta,b;

scanf("%x",&a);

b=a&0x5555;

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

}//偶数位清零

#include

#include

main()

{intn,a[20],m,*p=a;

ints(int*p,intn);

scanf("%o",&n);

m=s(a,n);

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

}

ints(int*p,intn)

{inti=0,j,s=0,t;

do{t=n%8;

n/=8;

p[i]=t;

i++;}while(n);

for(j=0;j

s+=p[j]*pow(8,j);

returns;

}

//进制转换

试题查看

标题:

1.结构体的定义与引用

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

定义一个职工结构体数据类型,并定义职工结构体变量。

输入:

从键盘输入一个职工的信息。

(4个数据,每个占一行,工资有两位小数)

输出:

输出职工信息。

(4个数据,每个占一行)

输入样例:

zhangping

21

2183.55

输出样例:

zhangping

21

2183.55

提示:

来源:

#include

#include//结构体定义及输出

structs

{chara[20];

charb[20];

intx;

floatf;

}

main()

{structsm;

gets(m.a);

gets(m.b);

scanf("%d",&m.x);

scanf("%f",&m.f);

printf("%s\n%s\n%d\n%.2f\n",m.a,m.b,m.x,m.f);

}

试题查看

标题:

4.矩阵转置函数设计

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

设计一个函数,将任意n×n的矩阵转置,并在主函数中调用此函数将一个4*4的矩阵转置。

输入:

n×n的矩阵

输出:

转置后的n×n的矩阵

输入样例:

3

123

456

789

输出样例:

147

258

369

提示:

来源:

#include

main()

{inta[20][20],b[20][20],i,j,n;

voids(int(*m)[20],int(*h)[20],intn);

scanf("%d",&n);

for(i=0;i

for(j=0;j

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

s(a,b,n);

for(i=0;i

{for(j=0;j

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

printf("%d\n",b[i][n-1]);

}

}

voids(int(*m)[20],int(*h)[20],intn)

{inti,j;

for(i=0;i

for(j=0;j

h[j][i]=m[i][j];

}//转置

试题查看

标题:

8.对称数组判断

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

设计一个函数,判断二维数组是否为对称数组(对称矩阵),如果是,则返回1;如果不是,则返回0,并在主函数中调用此函数,判断一个4*4的数组是否为对称数组。

输入:

二维数组

输出:

是否为对称数组

输入样例:

4

1234

2567

3689

4790

输出样例:

Yes

提示:

来源:

#include

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 军事政治

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1