求c语言题目答案。。。。

求c语言题目答案。。。。,第1张

以下是C语言实现的代码:

Copy code

#include <stdioh>

#include <stdboolh>

//判断素数函数

bool is_prime(int num)

{

if (num <= 1) {

return false;

}

else if (num == 2) {

return true;

}

else {

for (int i=2; ii<=num; i++) {

if (num % i == 0) {

return false;

}

}

return true;

}

}

int main()

{

int n, p, q;

scanf("%d", &n);

if (n <= 1) {

//处理不合法输入

p = 2;

q = 4;

}

else {

p = n % 2 == 0 n + 1 : n + 2;//从n开始遍历奇数

q = p + 2;

while (!is_prime(p) || !is_prime(q)) {

p += 2;

q += 2;

}

}

printf("%d %d", p, q);

return 0;

}

这个程序首先从输入读取n,然后从n开始遍历奇数,找到大于n的最小的一对孪生素数p和q。在while循环中,每次将p和q各自增加2,直到找到两个都是素数的数为止。对于不合法输入,程序将输出2和4。

C语言程序设计复习:

1、理解以下术语的含义:数组、函数、地址 指针 指针变量 直接访问 间接访问、结构体

2、用起泡法对10个数由小到大排序(P134例题)

5、输入10个学生的成绩,分别用函数实现下列功能:

1)计算所有学生的平均分;

2) 计算学生成绩中最高分;

3) 计算学生成绩中最低分;

4) 统计及格学生人数;

5) 查找成绩为指定成绩(如90)记录,如果没有,请给出提示,如果有,请统计满足条件的记录数。

6、有一个已经排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。(P153习题74)

7、编写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字字符间空一个空格。如输入1990,应输出“1 9 9 0”。(要求用函数)(P202习题88)

8、编写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。(要求用指针,不能使用strlen()函数) (P279习题106)

9、编写一个程序,打入月份号,输出该月的英文月名。例如,输入“3”则输出“March”(要求用指针数组)。(P279习题1018)

10、将一个数组中的值按逆序重新存放。例如,输入的数组顺序为8,6,5,4,1,要求改为1,4,5,6,8。(P153习题75)

11、编写一个函数用“起泡法”对输入的10个字符按由小到大顺序排序(要用函数)。(P202习题811)

12、将数组a中n个整数按相反顺序存放(要用函数)。(P237例题107)

13、输入一行文字,找出其中大写字母、小写字母、空格、数字及其他字符各有多少。(要求用指针实现)(P279习题108)

14、编写一个函数,将两个字符串连接(要用自定义函数,不能用strcat函数)。(P202习题86)

15、输入3个字符串,按照由小到大的顺序输出。(要求用指针) (P278习题102)

16、输入10整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:1、输入10个数; 2、进行处理; 3、输出10个数(数据对换要求用指针实现)(P278习题103)

参考答案:

2、用起泡法对10个数由小到大排序

#include <stdioh>

void main()

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

printf("input 10 numbers :\n");

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

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

printf(“\n");

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

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

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

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

printf("the sorted numbers :\n");

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

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

}

3、用递归方法求n阶勒让德多项式的值,递归公式为(要求用函数):(P202习题813)

pn(x)= 1 n=0

x n=1

((2n-1)x-pn-1(x)-(n-1)pn-2(x)/n n>1

3、#include <stdioh>

void main()

{

int x,n;

float p(int,int);

printf(“input n & x:”);

scanf(“%d,%d”,&n,&x);

printf(“n=%d,x=%d\n”,n,x);

printf(“P%d(%d)=%62f\n”,n,x,p(n,x));

}

float p(int n,int x)

{

if(n==0)

return 1;

else if(n==1)

return x;

else

return ((2n-1)xp((n-1),x)-(n-1)p((n-2),x))/n;

}

4、输入3个整数,按由小到大的顺序输出(要求用指针类型)(P228例题)

4、输入3个整数,按由小到大的顺序输出(要求用指针类型)

#include <stdioh>

void main()

{

void sort (inta, intb,intc);

int a,b,c;

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

sort(&a,&b,&c);

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

}

void sort (int a, int b,int c)

{

int tmp;

if (a>b)

{

tmp=a;

a=b;

b=tmp;

}

if (a>c)

{

tmp=a;

a=c;

c=tmp;

}

if (b>c)

{

tmp=b;

b=c;

c=tmp;

}

}

5、输入10个学生的成绩,分别用函数实现下列功能:

1)计算所有学生的平均分;

6) 计算学生成绩中最高分;

7) 计算学生成绩中最低分;

8) 统计及格学生人数;

9) 查找成绩为指定成绩(如90)记录,如果没有,请给出提示,如果有,请统计满足条件的记录数。

#include <stdioh>

void main()

{

int average(int a[]);

int max(int a[]);

int min(int a[]);

int pass(int a[]);

int search(int a[],int g);

int i,j,g;

int score[10],aver,m1,m2,p,s;

printf("Please input 10 scores:\n");

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

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

printf("\n");

aver=average(score);

m1=max(score);

m2=min(score);

p=pass(score);

printf("平均分为: %d\n",aver);

printf("最高分为: %d\n",m1);

printf("最低分为: %d\n",m2);

printf("及格人数为: %d\n",p);

printf("需要查找吗?\n");

printf("输入1继续查找,输入0退出(1/0):");

scanf("%d",&j);

if(j==1)

{

printf("请输入要查找的分数: \n");

scanf("%d",&g);

s=search(score,g);

if(s==0)

printf("没有满足条件的记录");

else

printf("成绩为%d的学生共有%d名\n",g,s);

}

}

int average(int a[])

{

int i;

int aver,sum=a[0];

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

sum=sum+a[i];

aver=sum/10;

return aver;

}

int max(int a[])

{

int i;

int m=a[0];

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

if(m<a[i])

m=a[i];

return m;

}

int min(int a[])

{

int i;

int m=a[0];

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

if(m>a[i])

m=a[i];

return m;

}

int pass(int a[])

{

int i;

int s=0;

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

if(a[i]>=60)

s++;

return s;

}

int search(int a[],int g)

{

int i;

int s=0;

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

if(a[i]==g)

s++;

return s;

}

6、已有一个已排好次序的数组,要求输入一个数后,按原先排序的规律将它插入数组中。

Void main()

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

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

printf("初始数组如下:");

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

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

printf("\n");

printf("输入插入数据:");

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<1;j++)

{temp2=a[j];

a[j]=temp1;

temp1=temp2;

}

break;

}

}

}

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

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

}

7、编写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字字符间空一个空格。如输入1990,应输出“1 9 9 0”。

#include <iostream>

void main()

{

void stradd(char str[]);

char str[80];

printf("输入一串数字\n\n");

gets(str);

stradd(str);

printf("\n\n加空格后的字符串\n\n");

puts(str);

}

void stradd(char str[])

{

char a[80];

int i=0,j;

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

{

a[i]=str[j];

a[i+1]=' ';

i+=2;

}

a[i]='\0';

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

{

str[i]=a[i];

}

str[i]='\0';

}

8、编写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。(要求用指针实现)

#include "stdioh"

int stringlength( char *str )

{int n;

n=0;

While(str!=0)

{n++;

str++;

}

Return(n);

}

int main()

{

char str〔100〕,

int len,

printf("Please input a string: "),

scanf("%s"str),

len = stringlength( str ),

printf("The string’s length is %d"len),

return 0;

}

9、编写一个程序,打入月份号,输出该月的英文月名 n。例如,输入“3”则输出“March”,要求用指针数组处理。

#include <stdioh>

main()

{ char month_name[13]={"illegal month","January","February","March","April",

"May","June","July","August","September","October","November","December"};

int n;

printf("Input month: ");

scanf("%d",&n);

if((n<=12)&&(n>=1))

printf("It is %s\n",(month_name+n));

else

printf("It is wrong\n");

}

10、将一个数组中的值按逆序重新存放。例如,输入的数组顺序为8,6,5,4,1,要求改为1,4,5,6,8。

#include <stdioh>

#define N 5;

void main()

{

int a[N],i,temp;

printf(“enter array a:\n”);

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

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

printf(“array a:\n”);

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

{temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}

printf(“\nNow, array a:\n”);

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

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

printf(“\n”);

}

11、编写一个函数用“起泡法”对输入的10个字符按由小到大顺序排序(要用函数)。

#include <stdioh>

void main()

{ char str[80];

void sort(char str[]);

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

gets(str);

sort(str);

printf("\n\n字符由小到大排序为:\n\n");

puts(str);

}

void sort(char str[])

{ int i,j;

char temp;

for(i=0;i<strlen(str);i++)

{

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

{

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

{

temp=str[j];

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

str[j+1]=temp;

}

}

}

}

12、将数组a中n个整数按相反顺序存放(要用函数)。

#include <stdioh>

void inv(int x[ ],int n)/形参x是数组名/

int temp,i,j,m=(n-1)/2;

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

{j=n-1-i;

temp=x[i];x[i]=x[j];x[j]=temp;}

return;

void main()

{ int i,a[10]={3,7,9,11,0,6,7,5,4,2};

printf(“转换前的数组为:\n");

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

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

printf("\n");

inv(a,10);

printf(“转换后的数组为:\n");

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

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

printf("\n");

13、输入一行文字,找出期中大写字母、小写字母、空格、数字及其他字符各有多少?(要求用指针实现)

#include<stdioh>

#include<stringh>

int main()

{

char str[40];//创建字符串数组

int count[5]={0,0,0,0};//创建计数器数组并初始化

printf("Please input a string \n");

scanf("%s",str);

char p=str;//指针p指向字符串数组str

int n=strlen(str);//确定输入字符串的长度

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

{

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

{

count[0]++;//统计大写字母数目

}

else if((p+i)>='a'&&(p+i)<='z')

{

count[1]++;//统计小写字母数目

}

else if((p+i)>='0'&&(p+i)<='9')

{

count[2]++;//统计数字数目

}

else if((p+i)=='')

{

count[3]++;//统计空格数目

}

else

{

count[4]++;//统计其他字符数目

}

}

printf("大写字母 小写字母 数字 空格 其他字符:\n");

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

{

printf("%d\t ",count[i]);//打印各统计数目

}

printf("\n\n");

return 0;

}

14、编写一个函数,将两个字符串连接。

#include < stdioh >

#include<stringh>

void concatenate(char string1[],char string2[],char string[])

{

int i,j;

for(i=0;string1[i]!=’\0’;i++)

string[i]=string1[i];

for(j=0;string2[j]!=’\0’;j++)

string[i+j]=string2[j];

string[i+j]=’\0’;

}

void main()

{

char s1[100],s2[100],s[100];

printf(“input string1:”);

scanf(“%s”,s1);

printf(“input string2:”);

scanf(“%s”,s2);

concatenate(s1,s2,s)

printf(“the new string is %s”,s);

}

15、输入3个字符串,按照由小到大的顺序输出。 (要求用指针实现)

#include <stdioh>

void main()

{

void sort (inta, intb,intc);

int a,b,c;

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

sort(&a,&b,&c);

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

}

void sort (int a, int b,int c)

{

int tmp;

if (a>b)

{

tmp=a;

a=b;

b=tmp;

}

if (a>c)

{

tmp=a;

a=c;

c=tmp;

}

if (b>c)

{

tmp=b;

b=c;

c=tmp;

}

}

16、输入10整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:1、输入10个数; 2、进行处理; 3、输出10个数(数据对换要求用指针实现)

#include <stdioh>

void input(int number[])

{

Int I;

Printf(“input 10 numbers:”);

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

Scanf(“%d”,&number[i]);

}

void max_min_value(int number[])

{

int max,min,p,temp;

max=min=number;

For(p=number+1;p<number+10;p++)

if(p>max)

max=p;

else if(p<min)

min=p;

temp=number[0];number[0]=min;min=temp;

if(max=number) max=min;

temp=number[9];number[9]=max;max=temp;

}

void output(int number[])

{

int p;

printf(“Now, they are: “);

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

Printf(“%d”,p);

printf(“\n”);

}

void main()

{

int number[10];

input(number);

max_min_value(number);

output(number);

}

答案:

26功能:求a,b,c中的最大值。首先把a的值赋给m,当b大于c时,m(即a)与

与a比较,当m小于b是,把b的值赋给m,后面一样的道理。

27while(表达式1;表达式2;表达式3)表达式4;

其中表达式1,2,3,4都可以省略,但是分号不能够

省略;当表达式2的值为真的时候执行表达式4,若为假,则跳出while循环

执行后面的语句。

28(1)

int num[10];

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

(2)

int num[10],nptr;

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

nptr=num;

(3)

nptr+8是指num[7]的地址值;(nptr+8)是指元素num[7],即(nptr+8)==num[7]

(4)

nptr- =4指向元素num[1]的地址

29

printf("id=%d\tnum=%s\tarea=%f\n",p->id,p->name,p->area);

30

a

97,A,141

31

结果:abcdefghijklmnopqrstuvwxyz

功能:通过while语句输出a到z的小写字母

32

3次

结果:8

33

x=8,y=5

a=5,b=8

做了差不多有一个小时,好累

第一题

int main() {

int a = 0, b = 1, c = 1, d, i;

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

for (i = 3; i <= 20; i++){

d = c + 2  b + a;

printf(" %d", d);

a = b;

b = c;

c = d;

}

printf("\n");

return 0;

}

第二题

int main() {

int i, j, sum;

for (i = 1; i <= 1000; i++){

sum = 0;

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

if (i % j == 0) {

sum = sum + j;

}

}

if (sum == i) {

printf("%d:", i);

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

if (i%j == 0) {

printf(" %d", j);

}

}

printf("\n");

}

}

return 0;

}

第三题

int main() {

int i, num = 0, j, prime;

for (i = 100; i < 1000; i++) {

prime = 1;

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

if (i%j == 0) {

prime = 0;

}

}

if (prime) {

num = num + 1;

printf("%d ", i);

}

}

printf("\nTotal: %d\n", num);

return 0;

}

#include<stdioh>

#include<conioh>

int main(void)//也就是a或者b有一项为2或者1时,有必胜方法

{

int i, T, a[50] = { 0 }, b[50] = { 0 }, c[50] = { 0 };

scanf("%d", &T);

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

{

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

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

if (a[i] == 1 || a[i] == 2 || b[i] == 1 || b[i] == 2)

c[i] = 1;

}

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

{

if (c[i] == 1)

printf("YES\n");

else

printf("NO\n");

}

getch();

return 0;

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/12185518.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存