C语言程序设计题目.docx

上传人:b****5 文档编号:7148053 上传时间:2023-01-21 格式:DOCX 页数:35 大小:24.69KB
下载 相关 举报
C语言程序设计题目.docx_第1页
第1页 / 共35页
C语言程序设计题目.docx_第2页
第2页 / 共35页
C语言程序设计题目.docx_第3页
第3页 / 共35页
C语言程序设计题目.docx_第4页
第4页 / 共35页
C语言程序设计题目.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

C语言程序设计题目.docx

《C语言程序设计题目.docx》由会员分享,可在线阅读,更多相关《C语言程序设计题目.docx(35页珍藏版)》请在冰豆网上搜索。

C语言程序设计题目.docx

C语言程序设计题目

AC语言程序设计教程(第三版)课后习题

定义一个结构体变量(包括年、月、日)。

计算该日在本年中是第几天,注意闰年问题。

struct

{

intyear;

intmonth;

intday;

}tian;

intmain()

{

intdays(intyear,intmonth,intday);

ints;

scanf("%d%d%d",&,&,&;

s=days,,;

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

}

intdays(intyear,intmonth,intday)

{

inti=month,s,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31},sum=0,leap,j;

if(year%4==0)

{

if(year%100==0)

{

if(year%400==0)

leap=1;

else

leap=0;

}

else

leap=1;

}

else

leap=0;

if(leap&&i>2)

{

for(j=1;j

s=sum+day+1;

}

else

{

for(j=1;j

sum=sum+a[j];

s=sum+day;

}

return(s);

}

BC语言程序设计教程(第三版)课后习题

现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。

编写一个函数input,用来输入一个学生的数据记录。

编写一个函数print,打印一个学生的数据记录。

在主函数调用这两个函数,读取N条记录输入,再按要求输出。

N<100【考虑用什么做函数的参数结构体变量,还是指向结构体的指针变量,还是用结构体数组名】

非结构体做法

#include<>

intmain()

{

inti,n;

inta[100],b[100],c[100];

chare[100][81],f[100][81];

scanf("%d",&n);

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

scanf("%s%s%d%d%d",e[i],f[i],&a[i],&b[i],&c[i]);

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

printf("%s,%s,%d,%d,%d\n",e[i],f[i],a[i],b[i],c[i]);

return0;

}

C结构体训练

有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)

注意:

刻画学生的数据类型必须用结构体类型。

不能用多个数组解决

#include<>

intmain()

{

structstu{

intnum;

charname[20];

intscore1;

intscore2;

intscore3;

}boy[1024];

intN,i,s,s1=0,s2=0,s3=0,max=0,c;

floatave1,ave2,ave3;

scanf("%d",&N);

for(i=0;i

{

scanf("%d%s%d%d%d",&boy[i].num,&boy[i].name,&boy[i].score1,&boy[i].score2,&boy[i].score3);

s1+=boy[i].score1;

s2+=boy[i].score2;

s3+=boy[i].score3;

s=boy[i].score1+boy[i].score2+boy[i].score3;

if(s>max)

{

max=s;

c=i;

}

}

ave1=(s1*/(N*;

ave2=(s2*/(N*;

ave3=(s3*/(N*;

printf("%.0f%.0f%.0f\n",ave1,ave2,ave3);

printf("%d%s%d%d%d\n",boy[c].num,boy[c].name,boy[c].score1,boy[c].score2,boy[c].score3);

}

D矩阵转置

输入N*N(N<100)的矩阵,输出它的转置矩阵。

#include<>

intmain()

{

intN,a[100][100],i,j,b[100][100];

scanf("%d\n",&N);

for(i=0;i

for(j=0;j

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

for(i=0;i

for(j=0;j

b[j][i]=a[i][j];

for(i=0;i

{

for(j=0;j

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

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

}

}

E求矩阵的外围元素之和

求矩阵的外围元素之和

#include<>

intmain()

{

inta[10][10],i,j,N,s=0;

scanf("%d\n",&N);

for(i=0;i

for(j=0;j

{

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

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

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

}

printf("%d",s);

}

F求n到m之间的素数并输出

求n到m以内的素数(包含n,m,且m>=n>=10,n<=m<=100)n和m由键盘输入,并将这些素数存储到数组a中并输出(每个素数后面带一个空格)

要求:

(1)编写如下接口的功能函数:

intfun(intn),该函数的功能是判断n是不是素数。

若是,返回1,若不是返回0。

(2)main函数去调用该功能函数

#include<>

intfun(intn)

{

intt;

for(t=2;t

if(n%t==0)break;

if(t

elsereturn1;

}

intmain()

{

intn,m,i,a[90],j=0,b;

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

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

{

if(fun(i)==1)

a[j++]=i;

}

for(b=0;b

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

}

G<编程题>删除字符串中的特殊符号

指定字符串中仅包含字母(含大小写),空格和星号*,编写自定义函数fun,删除其中的*。

程序的主体框架已经提供在下面,可以直接复制粘贴到答题框。

注意仅能改动注释之内的内容,注释外内容不得修改,否则将被判违规。

voidfun(char*p)

{

/*****注释1:

答题请在本行与注释2之间编写程序。

本行注释不得删除****/

char*p1,*p2;

for(p1=p2=p;*p1;p1++)

if(*p1!

='*')

*p2++=*p1;

*p2=0;

returnp;

/*****注释2:

答题请在本行与注释1之间编写程序。

本行注释不得删除****/

}

intmain()

{

charb[1024];

while(gets(b)!

='\0')

{

fun(b);

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

}

return1;

}

H<改错题>冒泡排序

下列给定程序中函数fun的功能是:

用冒泡法对6个字符串按由小到大的顺序进行排序。

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构.改错位置已经标注为found,所有改错只能在found附近修改。

#include<>

#include<>

#defineMAXLINE20

fun(char*pstr[6])

{

inti,j;

char*p;

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

{

/**********found***************/

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

{

if(strcmp(*(pstr+i),*(pstr+j))>0)

{

p=*(pstr+i);

/**********found***************/

*(pstr+i)=*(pstr+j);

*(pstr+j)=p;

}

}

}

}

intmain()

{

inti;

char*pstr[6],str[6][MAXLINE];

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

pstr[i]=str[i];

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

scanf("%s",pstr[i]);

fun(pstr);

printf("TheStringaftersorting:

\n");

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

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

return0;

}

I<填空题>2015C二级考试无纸化操作题

(2)

下列给定程序中,函数fun的功能是:

把形参a所指数组中的最小值放在元素a[O]中,接着把a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3],依此类推。

例如,若a所指数组中的数据最初排列为:

9,1,4,2,3,6,5,8,7;则按规则移动后,数据排列为:

1,9,2,8,3,7,4,6,5。

形参n中存放a所指数组中数据的个数。

规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。

请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。

注意:

部分源程序给出如下。

不得增行或删行,也不得更改程序的结构!

voidfun(char*p)

{

/*****注释1:

答题请在本行与注释2之间编写程序。

本行注释不得删除****/

char*p1,*p2;

for(p1=p2=p;*p1;p1++)

if(*p1!

='*')

*p2++=*p1;

*p2=0;

returnp;

/*****注释2:

答题请在本行与注释1之间编写程序。

本行注释不得删除****/

}

intmain()

{

charb[1024];

while(gets(b)!

='\0')

{

fun(b);

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

}

return1;

}

J编辑部的故事

(1)

文艺青年杂志社对作者按字符数付稿酬。

编辑部的编辑遇到一个烦心事,最近作者群中流行“咆哮体”文书,一句话里带有很多个感叹号,而且咆哮体中经常混杂着“有木有”和“尼玛”这样无用的词语,使得杂志的额外支出大大增加。

你需要帮助解决这一个问题,将文本中多个连续的感叹号,无用的“有木有”和“尼玛”等无用的词。

K<改错题>39

下面程序中函数fun的功能是:

统计p2子字符串在p1所指的主字符串中出现的次数。

请改正程序中的错误,使得它能得出正确结果

#include<>

intfun(char*p1,char*p2)

{

inti,j,k,num=0;

/*****found****/

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

for(j=i,k=0;p2[k]==p1[j];k++,j++)

if(p2[k+1]=='\0')

{

num++;

Break;

}

returnnum;

}

intmain()

{

charstr[80],substr[80];

gets(str);

gets(substr);

printf("%d",fun(str,substr));

return0;

}

L<编程题>33

编写函数fun,其功能是找出M×N的二维浮点数组中最大元素的值,将这个数输出。

(M,N均小于100)

voidfun(float*p,intM,intN)

{

floatmx=*(p+0);

/******begin******/

inti;

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

if(*(++p)>mx)

mx=*p;

/*******end******/

printf("%.4f",mx);

}

intmain()

{

inta[100][100],M,N,i,j;

scanf("%d%d",&M,&N);

for(i=0;i

for(j=0;j

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

fun(&a[0][0],M,N);

return0;

}

M第七章之找到第一名

(1)

某市进行了一次英语竞赛,一共有N个人报名参加(N<1000000),按照报名顺序分别是1号~N号。

英语竞赛的得分范围是0~100分,可能会有分存在。

现在给你N的值和按照号码排列的得分,要求输出第一名的号码。

若是有并列第一名则需要同属输出多个第一名的号码。

#include<>

intmain()

{

inta[100],N,i,max=0,n;

scanf("N=%d",&N);

for(i=0;i

{

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

if(a[i]>max)

max=a[i];

}

for(i=0;i

{

if(max==a[i])

{

n=i+1;

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

}

}

}

N第七章之删除数组元素

(1)

输入N个大小范围在0~100(含0和100)的整数(N<100),并未排序且不重复。

从中寻找一个指定的数的下标号(从1开始),从数组中删除,并将剩余的数组内容输出。

#include<>

intmain()

{

intn,a[99],i,b;

scanf("N=%d",&n);

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

{

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

}scanf("%d",&a[n-1]);

scanf("%d",&b);

if(b!

=n)

{

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

{

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

}

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

{

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

}printf("%d",a[n-1]);

}

else

{

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

{

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

}printf("%d",a[n-2]);

}

}

O第七章之冒泡排序法

(1)

使用冒泡排序法对数组元素进行排序,要求输出每一趟排序后的数组内容。

数组大小N<10,数组元素定为正整型。

#include<>

intmain()

{

inta[10],i=0,j,n,t,m;

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

=EOF)

i++;

n=i;

for(i=0;i

{

for(j=0;j

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

{

t=a[j];

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

a[j+1]=t;

}

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

for(m=1;m

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

printf("\n");

}

}

P所有串长超过k的字符串中后面的字符删除

函数fun的功能是:

在形参ss所指字符串数组中,将所有串长超过k(K<=N)。

的字符串中后面的字符删除,只保留前面的k个字符。

ss所指字符串数组中共有M(M<=5)个字符串,且串长小于N(N<=10)。

#include<>

voidfun(charss[][11],intM,intk)

{

/*******yourcodestart******/

inti=0;

while(i

{

ss[i][k]='\0';

i++;

}

/******yourcodeend******/

}

intmain()

{

intM,k,i;

charss[5][11];

scanf("%d",&M);

scanf("%d",&k);

gets(ss[0]);

for(i=0;i

gets(ss[i]);

fun(ss,M,k);

for(i=0;i

puts(ss[i]);

return0;

}

Q字符串按长度由短到长进行排序

函数fun的功能是:

在形参ss所指字符串数组中,将所有串长超过k(K<=N)。

的字符串中后面的字符删除,只保留前面的k个字符。

ss所指字符串数组中共有M(M<=5)个字符串,且串长小于N(N<=10)。

#include<>

#include<>

voidfun(charss[][11],intM)

{

char*ps[5],*tp;

inti,j,k;

for(i=0;i

for(i=0;i

{

k=i;

for(j=i+1;j

if(strlen(ps[k])>strlen(ps[j]))

k=j;

tp=ps[i];

ps[i]=ps[k];

ps[k]=tp;

}

for(i=0;i

puts(ps[i]);

}

intmain()

{intM,i;

charss[5][11];

scanf("%d",&M);

gets(ss[0]);

for(i=0;i

fun(ss,M);

}

R补齐字符串

函数fun的功能是:

求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。

字符串数组中共有M(M<=5)个字符串,且串长小于N。

(N<=10)

#include<>

#include<>

voidfun(charss[][11],intM)

{inti,j,k=0,n,m,len;

for(i=0;i

{len=strlen(ss[i]);

if(i==0)n=len;

if(len>n)

{

n=len;

k=i;

}

}

for(i=0;i

if(i!

=k)

{m=n;(最大长)

len=strlen(ss[i]);

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

ss[i][m--]=ss[i][j];

for(j=0;j

ss[i][j]='*';

}

}

intmain()

{intM,i;

charss[5][11];

scanf("%d",&M);

gets(ss[0]);

for(i=0;i

fun(ss,M);

for(i=0;i

}

S每个单词的第一个字母改成大写

读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里"单词"是指由空格隔开的字符串)。

#include<>

#include""

#include""

voidupfst(char*p)

{

if(*p!

='\0')

{

*p=toupper(*p);

p++;

}

for(;*p;p++)

if(*(p-1)==''&&*p!

='')

*p=toupper(*p);

}

intmain()

{

charchrstr[81];

gets(chrstr);

upfst(chrstr);

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

return0;

}

T文本分析2

函数fun的作用是:

统计整型变量m中各数字出现的次数,并存放到数组a中,其中:

a[0]存放0出现的次数,a[1]存放1出现的次数,……a[9]存放9出现的次数

#include<>

voidfun(intm,inta[10])

{inti;

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

a[i]=0;

while(m>0){

i=m%10;

a[i]++;

m=m/10;

}

}

intmain()

{

intm,a[10],i;

scanf("%d",&m);

fun(m,a);

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

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

printf("\n");

}

U删除所有串长超过k的字符串

函数fun的功能是:

从形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回剩余字符串的个数,并输出剩下的字符串。

ss所指字符串数组中共有M(M<=5)个字符串,且串长小于N(N<=10)),

#include<>

#include<>

intfun(charss[][11],intM,intk)

{

inti,j=0,l;

for(i=0;i

{

l=strlen(ss[i]);

if(l<=k)

strcpy(ss[j++],ss[i]);

}

returnj;

}

intmain()

{

intM,k,i,f;

charss[5][11];

scanf("%d",&M);

scanf("%d",&k);

gets(ss[0]);

for(i=0;i

gets(ss[i]);

f=fun(ss,M,k);

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

for(i=0;i

puts(ss[i]);

}

V字符串比较

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

当前位置:首页 > 高等教育 > 其它

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

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