东北大学c语言大题+答案2.docx

上传人:b****0 文档编号:12779886 上传时间:2023-04-22 格式:DOCX 页数:107 大小:37.20KB
下载 相关 举报
东北大学c语言大题+答案2.docx_第1页
第1页 / 共107页
东北大学c语言大题+答案2.docx_第2页
第2页 / 共107页
东北大学c语言大题+答案2.docx_第3页
第3页 / 共107页
东北大学c语言大题+答案2.docx_第4页
第4页 / 共107页
东北大学c语言大题+答案2.docx_第5页
第5页 / 共107页
点击查看更多>>
下载资源
资源描述

东北大学c语言大题+答案2.docx

《东北大学c语言大题+答案2.docx》由会员分享,可在线阅读,更多相关《东北大学c语言大题+答案2.docx(107页珍藏版)》请在冰豆网上搜索。

东北大学c语言大题+答案2.docx

东北大学c语言大题+答案2

/*函数voidfun(inta[],intn,int*small,int*big),该函数的功能是分别求出一维数组a中所有奇数项中的最小值与所有偶数项中的最大值,

形参n给出数组中数据的个数;利用指针small返回奇数项中的最小值,利用指针big返回偶数项中的最大值。

要求:

在主调函数中初始化一个一维数组,并在主调函数中调用函数fun后,在主调函数中输出结果。

*/

#include

voidfun(inta[],intn,int*small,int*big);

main()

{

inta[8]={1,2,3,4,5,6,7,8},*small=a,*big=a+1;

fun(a,8,small,big);

printf("奇数项中的最小值为%d与所有偶数项中的最大值为%d",*small,*big);

}

voidfun(inta[],intn,int*small,int*big)

{

inti;

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

if(*small>a[i])

*small=*(a+i);

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

if(*big

*big=*(a+i);

}

/*编写函数voidnew(charstr[]),该函数将字符串str中ASCII值为偶数的字符删除,串中剩余字符形成一个新串。

编写函数voidstringcat(charstr1[],charstr2[])将原字符串str链接在新串的后面。

编写一个程序,调用上述各个函数。

要求:

在main()函数中初始化字符串str并输出原字符串str,调用各个函数后在主函数中输出处理后的新字符串str。

要求:

不允许使用字符串库函数。

*/

#include

voidnew(charstr[]);

voidstringcat(charstr1[],charstr2[]);

main()

{

charstr[40]="0elloworld",str2[20],*s=str,*p=str2;

while(*s!

='\0')

{

*p=*s;

s++;p++;

}

*p='\0';

new(str);

stringcat(str,str2);

puts(str);

}

voidnew(charstr[])

{

char*p=str,*q=str;

while(*q!

='\0')

{

p=q;

if((int)*p%2==0)

{

while(*p!

='\0')

{

*p=*(p+1);

p++;

}

}

else

q++;

}

}

voidstringcat(charstr1[],charstr2[])

{

char*m=str1,*n=str2;

while(*m!

='\0')

m++;

while(*n!

='\0')

{

*m=*n;

m++;

n++;

}

*m='\0';

}

/*编写函数voidstrfun(charstr[],intn,intk,intm),此函数的功能是:

对一个长度为n的字符串str从其第k个字符起,删除m个字符,

组成长度为n-m的新串(其中:

n、m<=80,k<=n)。

要求在main()函数中初始化字符串str并输出原字符串str,调用函数后,在main()函数输出处理后的新串。

在输入字符串“weareallstudents.”,利用此函数进行删除“all”的处理,并输出处理后的字符串。

*/

#include

voidstrfun(charstr[],intn,intk,intm);

main()

{

charstr[]="student";

intk,m;

puts(str);

printf("k,m=");

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

strfun(str,7,k,m);

printf("%s",str);

}

voidstrfun(charstr[],intn,intk,intm)

{

char*p=str;

inti;

for(p=p+k-1;p

*p=*(p+m);

*p='\0';

}

/*编写函数intstrfun(charstr[],chara),其功能是计算str所指定字符串中,出现指定字符的个数,并返回此值。

例如:

若字符串:

123412132,输入字符为:

1,则返回:

3。

要求在main()函数中初始化字符串str并输出原字符串str,

调用函数strfun()后在主函数中输出处理后的返回值。

要求:

不允许使用字符串库函数。

*/

#include

intstrfun(charstr[],chara);

main()

{

charstr[]="helloworld",a;

intd;

puts(str);

printf("输入一个字符a:

\n");

a=getchar();

d=strfun(str,a);

printf("共有%d个\n",d);

}

intstrfun(charstr[],chara)

{

inti=0;

char*p=str;

while(*p!

='\0')

{

if(*p==a)

i++;

p++;

}

returni;

}

/*编写函数voidrevstr(char*str),其功能是把字符串str反序。

例如字符串str为”abcde”时,则处理后为”edcba”,

要求:

在main()函数中初始化字符串str并输出原字符串str,调用函数后在主函数中输出处理后的新字符串str。

要求:

不允许使用字符串库函数。

*/

#include

voidrevstr(char*str);

main()

{

charstr[20];

printf("输入一个字符串");

gets(str);

revstr(str);

puts(str);

}

voidrevstr(char*str)

{

chart,*p=str,*q=str;

intd,i;

while(*q!

='\0')

q++;

d=q-p;

for(i=0;i

{

t=*(p+i);

*(p+i)=*(p+d-1-i);

*(p+d-1-i)=t;

}

}

/*编写函数voidstrfun(charstr[]),该函数功能是把str字符串中的所有字符左移一个位置,串中的第一个字符移到最后。

编写主程序,要求在main()函数中初始化字符串str并输出原字符串str,调用函数完成字符串移位后在主函数中输出处理后的新串。

要求:

不允许使用字符串库函数。

*/

#include

voidstrfun(charstr[]);

main()

{

charstr[]="abcde";

puts(str);

printf("\n");

strfun(str);

puts(str);

}

voidstrfun(charstr[])

{

chart,*p=str;

t=*p;

for(p=str;*(p+1)!

='\0';p++)

*p=*(p+1);

*p=t;

}

/*编写函数voidnew(charstr[]),该函数将字符串str中下标值为奇数的字符删除,串中剩余字符形成一个新串。

编写函数voidstrstoc(charstr[])将新字符串中的大写字母转换为小写字母。

编写程序,调用上述各个函数。

要求:

在main()函数中初始化字符串str并输出原字符串str,调用各个函数后在主函数中输出处理后的新字符串str。

要求:

不允许使用字符串库函数。

*/

#include

voidnew(charstr[]);

voidstrstoc(charstr[]);

main()

{

charstr[]="01234567mnj";

puts(str);

new(str);

strstoc(str);

puts(str);

}

voidnew(charstr[])

{

inti,j;

for(i=1;str[i]!

='\0';i++)

{

j=i;

while(str[j]!

='\0')

{

str[j]=str[j+1];

j++;

}

}

}

voidstrstoc(charstr[])

{

char*p=str;

while(*p!

='\0')

{

if(*p>='a'&&*p<='z')

*p=*p-32;

p++;

}

}

/*将一个正整数分解质因数。

例如:

输入90,打印出90=2*3*3*5。

*/

#include

main()

{

intn,i,a[10],j=0;

printf("输入一个数n:

");

scanf("%d",&n);

printf("%d=",n);

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

{

while(i!

=n)

{

if(n%i==0)

{

printf("%d*",i);

n=n/i;

}

else

break;

}

}

printf("%d",n);

}

/*设有一分数列:

2/1,3/2,5/3,8/5,13/8,21/13,……试编程求出这个数列的前十项之和。

*/

#include

main()

{

floati=2.0,j=1.0,k,t;

floatsum=0;

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

{

sum+=(i/j);

t=i;

i=i+j;

j=t;

}

printf("sum=%.2f",sum);

}

/*编写程序:

找出不超过1000的十位数字为1,个位数字为3或7的所有数。

例如:

13、17、113、317等。

*/

#include

main()

{

intn;

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

{

if(n%10==3||n%10==7)

if((n%100-n%10)/10==1)

printf("%4d",n);

}

}

/*输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

*/

#include

main()

{

charstr[100],*p=str;

inti=0,j=0,m=0,n=0;

printf("输入一行字符\n");

gets(str);

for(;*p!

='\0';p++)

{

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

i++;

elseif(*p=='')

j++;

elseif(*p>='0'&&*p<='9')

m++;

else

n++;

}

printf("%s其中英文字母%d、空格%d、数字%d和其它字符的个数%d\n",str,i,j,m,n);

}

/*编程将一个数组中的最大的元素与第一个元素交换,最小的元素与最后一个元素交换,输出数组。

要求初始化数组。

*/

#include

main()

{

inta[3][3]={2,5,1,5,4,7,3,4,5},i,j,max=a[0][0],min=a[0][0],t;

inte,b,c,d;

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

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

{

if(max

{

max=a[i][j];

e=i;b=j;

}

elseif(min>a[i][j])

{

min=a[i][j];

c=i;d=j;

}

}

t=a[0][0];

a[0][0]=max;

a[e][b]=t;

t=a[2][2];

a[2][2]=min;

a[c][d]=t;

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

{

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

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

printf("\n");

}

}

/*编写一个函数spir,其功能是判断一个数是否为素数。

编程实现一个足够大的偶数(>6)总能表示为两个素数之和。

*/

#include

intspir(intm);

main()

{

intx,m,n,q;

printf("输入一个偶数x:

");

scanf("%d",&x);

for(m=2;m

{

q=spir(m);

if(q)

{

n=x-m;

q=spir(n);

if(q)

{

printf("%d=%d+%d\n",x,m,n);

break;

}

}

}

}

intspir(intm)

{

inti;

for(i=2;i

{

if(m%i==0)

break;

}

if(i>=m)

return1;

else

return0;

}

/*编写一个函数myatol,该函数的功能是:

输入一个数字字符串,返回对应的long型整数。

在main函数中写出调用的语句。

例如,调用myatol(“678”),函数返回long型整数678。

*/

#include

longmyatol(charstr[]);

main()

{

charstr[20];

longl,m;

gets(str);

l=myatol(str);

printf("数字字符串为数字%ld\n",l);

}

longmyatol(charstr[])

{

char*p=str,*q=str;

inti=0,k;

longl=0;

while(*(p+i)!

='\0')

{

k=*(p+i)-48;

l=l*10+k;

i++;

}

returnl;

}

/*编写一个函数myatol,该函数的功能是:

输入long型整数,返回对应的一个字符串。

在main函数中写出调用的语句。

例如,调用myatol(678),函数返回数字字符串"678"。

*/

#include

voidmyatol(longl,char*p);

main()

{

longl;

charstr[20];

printf("输入一个数l:

");

scanf("%ld",&l);

myatol(l,str);

puts(str);

}

voidmyatol(longl,char*p)

{

intk,i=0,j;

chart;

while(l!

=0)

{

k=l%10;

*(p+i)=k+48;

l=l/10;

i++;

}

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

for(j=0;j

{

t=*(p+i-j-1);

*(p+i-j-1)=*(p+j);

*(p+j)=t;

}

}

/*编写一个函数substring,其功能是计算字符串中子串出现的次数。

要求在主函数中初始化字符串和子串,调用函数substring后,在主函数中输出计算的结果。

*/

#include

intsubstring(charstr1[],charstr2[]);

main()

{

charstr1[40],str2[10];

intn;

printf("输入字符串和子串\n");

gets(str1);

gets(str2);

n=substring(str1,str2);

printf("共有%d个\n",n);

}

intsubstring(charstr1[],charstr2[])

{

inti=0;

char*p=str1,*q;

while(*p!

='\0')

{

q=str2;

while((*p==*q)&&(*q!

='\0')&&(*p!

='\0'))

{

p++;

q++;

}

if(*q=='\0')

{

i++;

p--;

}

p++;

}

returni;

}

/*编写函数voidsort(charstr[]),该函数把str字符串按照ASCII码从小到大排序。

在main()函数中初始化字符串str,

调用函数后输出处理后的字符串str。

例如:

如果str为”main”,则函数调用后str为”aimn”。

*/

#include

voidsort(charstr[]);

main()

{

charstr[10];

gets(str);

sort(str);

puts(str);

}

voidsort(charstr[])

{

inti,j;

chart;

for(i=0;str[i]!

='\0';i++)

for(j=i;str[j+1]!

='\0';j++)

{

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

{

t=str[j];

str[j]=str[j+1];

str[j+1]=t;

}

}

}

/*将一维数组中的10个元素对调。

即第一个元素变为最后一个元素,最后一个元素变为第一个元素,第二个元素和第八个元素对调…。

*/

#include

main()

{

inta[10]={0,1,2,3,4,5,6,7,8,9},i,t;

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

{

t=a[i];

a[i]=a[9-i];

a[9-i]=t;

}

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

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

}

/*实现两个数的#法和$法运算。

如输入3,4,#,输出25;输入3,4,$,输出34;提示:

#法和$法运算是自己定义的一种运算,a#b=a*a+b*b,a$b=a*10+b。

*/

#include

main()

{

inta,b,y;

charc;

printf("输入两个数和运算符:

");

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

if(c=='#')

y=a*a+b*b;

if(c=='$')

y=a*10+b;

printf("%d%c%d=%d",a,c,b,y);

}

/*编写函数mystr(char*str),函数将字符串str中的所有大写字母删除,剩余的字符串仍由str描述,计算删除后str的长度。

要求:

在主函数main中初始化str并输出,调用函数mystr(char*str)后输出str和str的长度。

不允许使用字符处理库函数。

*/

#include

intmystr(char*str);

main()

{

charstr[20];

intd;

printf("输入一个字符串:

");

gets(str);

d=mystr(str);

printf("输出改动过的字符串和字符串长度\n");

puts(str);

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

}

intmystr(char*str)

{

char*p=str,*q;

inti=0,j;

while(*(p+i)!

='\0')

{

j=i;

if(*(p+j)>='A'&&*(p+j)<='Z')

{

while(*(p+j)!

='\0')

{

*(p+j)=*(p+j+1);

j++;

}

}

else

i++;

}

p=q=str;

while(*p!

='\0')

p++;

returnp-q;

}

/*"求矩阵的所有靠内侧的各元素值之和。

要求初始化矩阵(4行5列),输出原始的矩阵和内侧的各元素值之和,必须用循环实现。

例如,矩阵为:

3123

2573

1142

则所有靠内侧的各元素值之和为5+7=12。

提示:

相当于循环计算时,数组a[i][j]中的i,j不为0或n-1。

"*/

#include

main()

{

inta[4][5],i,j,sum=0;

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

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

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

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

{

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

{

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

sum+=a[i][j];

}

printf("\n");

}

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

}

0-9可以组成多少个不重复三位奇数

#include

main()

{

inti,j,k,s=0;

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

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

for(k=1;k<=9;k=k+2)

if(i!

=j&&j!

=k&&i!

=k)

s++;

printf("%d",s);

}

1,1+2...,1+2+...+9各项值的积

#include

main()

{

inti;

intj;

intx=0;

doubley=1;

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

{

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

x=x+j;

y=y*x;

x=0;

}

printf("\nvalueis%.0lf",y);

}

1-1000之间所有完数

#include

展开阅读全文
相关搜索

当前位置:首页 > 表格模板 > 调查报告

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

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