资源描述
目录
题目一前N项和问题 3
题目二SS字符串问题 4
题目三 变量互换问题1 4
题目三 变量互换问题2 5
题目三 变量互换问题3 5
题目四 最大公约数问题 6
题目五 长数变短数1 7
题目五 长数变短数2 7
题目五 长数变短数3 8
题目五 长数变短数4 9
题目五 长数变短数5 9
题目五 长数变短数6 10
题目五 长数变短数7 11
题目五 长数变短数8 11
题目五 长数变短数9 12
题目六斐波拉契数列 13
题目七 链表1 14
题目七 链表2 15
题目七 链表3 16
题目七 链表4 17
题目八非素数问题 19
题目九 排序问题1 19
题目九 排序问题2 20
题目九 排序问题3 21
题目九 排序问题4 22
题目九 排序问题5 23
题目九 排序问题6 24
题目九 排序问题6 25
题目九 排序问题7 26
题目十平均值问题1 26
题目十平均值问题2 27
题目十平均值问题3 28
题目十平均值问题4 29
题目十平均值问题5 30
题目十一字符串连接1 30
题目十一字符串连接2 31
题目十一字符串连接3 32
题目十一字符串连接4 32
题目十二求和问题1 33
题目十二求和问题2 34
题目十二求和问题3 35
题目十二求和问题4 36
题目十二求和问题5 37
题目十二求和问题6 37
题目十二求和问题7 38
题目十二求和问题8 39
题目十二求和问题9 39
题目十二求和问题10 40
题目十二求和问题11 41
题目十二求和问题12 42
题目十二求和问题13 42
题目十二求和问题14 43
题目十二求和问题15 44
题目十二求和问题16 44
题目十二求和问题17 45
题目十二求和问题18 45
题目十二求和问题19 46
题目十三整数问题 47
题目十四字符串逆置 48
题目十五进制转换1 48
题目十五进制转换2 49
题目十六素数问题1 50
题目十六素数问题2 50
题目十六素数问题3 51
题目十六素数问题4 52
题目十六素数问题5 53
题目十七删除字符串中指定项1 53
题目十七删除字符串中指定项2 54
题目十八最小公倍数问题 55
题目十九 字符串替换问题1 55
题目十九 字符串替换问题2 56
题目二十找最长字符串 57
题目二十一 数组问题1 58
题目二十一 数组问题2 59
题目二十一 数组问题3 60
题目二十二求平方根问题 61
题目二十三短字符串变长字符串1 61
题目二十三短字符串变长字符串2 62
题目二十三短字符串变长字符串3 63
题目二十三短字符串变长字符串4 64
题目二十四字符串s问题1 64
题目二十四字符串s问题2 65
题目二十四字符串s问题3 66
题目二十五求方程的根 67
题目二十六求阶乘1 68
题目二十六求阶乘2 69
题目二十六求阶乘3 69
题目二十七 方阵问题 70
题目二十八查找字符串中某元素的数目 71
题目二十九最大值问题1 72
题目二十九最大值问题2 72
题目二十九最大值问题3 73
题目三十大小写转换1 74
题目三十大小写转换2 75
题目三十大小写转换3 76
题目三十一:计算数字位数的问题1 77
题目三十一:计算数字位数的问题2 78
题目三十一:计算数字位数的问题3 79
题目三十一:计算数字位数的问题4 80
题目三十二记录字母 数字个数问题1 81
题目三十二记录字母 数字个数问题2 82
题目三十二记录字母 数字个数问题3 83
题目三十二记录字母 数字个数问题4 83
题目三十三对角线问题 84
题目三十四 比较字符串大小 85
题目一前N项和问题
.下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。和值通过函数值返回。
例如,若n=5,则应输出8.391667。
请改正程序中的错误,使其得出对的的结果。
#include <stdio.h>
/************found************/
void fun ( int n )
{ int a, b, c, k; double s;
s = 0.0; a = 2; b = 1;
for ( k = 1; k <= n; k++ ) {
/************found************/
s = s + (Double)a / b;
c = a; a = a + b; b = c;
}
return s;
}
main( )
{ int n = 5;
printf( "\nThe value of function is: %lf\n", fun ( n ) );
(1)double fun(int n)
(2)s=s+(double)a/b;
题目二SS字符串问题
2.下列给定程序中函数fun的功能是:记录substr所指的子符串在str所指的字符串中出现的次数。
例如,若字符串为aaas 1kaaas,子字符串为as,则应输出2。
请改正程序中的错误,使它能得出对的的结果。
#include <stdio.h>
int fun (char *str,char *substr)
{ int i,j,k,num=0;
/************found************/
for(i = 0, str[i], i++)
for(j=i,k=0;substr[k]==str[j];k++,j++)
/************found************/
If(substr[k+1]=='\0')
{ num++;
break;
}
return num;
}
main()
{
char str[80],substr[80];
printf("Input a string:") ;
gets(str);
printf("Input a substring:") ;
gets(substr);
printf("%d\n",fun(str,substr));
(1)for(i=0;str[i];i++)
(2)if(substr[k+1]== '\0')
题目三 变量互换问题1
2. 下列给定程序中函数fun的功能是:实现两个变量值的互换,规定不允许增长语句和表达式。
例如,变量a中的值原为8,b中的值原为3,程序运营后a中的值为3,b中的值为8。
请改正程序中的错误,使它得出对的的结果。
#include <stdio.h>
int fun(int *x,int y)
{
int t ;
/**************found**************/
t = x ; x = y ;
/**************found**************/
return(y) ;
}
main()
{
int a = 3, b = 8 ;
printf("%d %d\n", a, b) ;
b = fun(&a, b) ;
printf("%d %d\n", a, b) ;
(1)t = *x ; *x = y ;
(2)return(t) ;或return t;
题目三 变量互换问题2
1. 下列给定程序中,函数fun的功能是:实现两个整数的互换。例如,给a和b分别输入60和65,输出为:a=65 b=60。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
/*************found**************/
void fun(int a,b)
{ int t;
/*************found**************/
t=b;b=a;a=t;
}
void main()
{int a,b;
system("CLS");
printf("Enter a, b: "); scanf("%d%d",&a,&b);
fun(&a, &b);
printf("a=%d b=%d\n ", a,b);
}
(1)void fun(int *a,int *b)
(2)t=*b; *b=*a; *a=t;
题目三 变量互换问题3
2. 下列给定程序中,函数fun的功能是:将主函数中两个变量的值进行互换。例如,若变量a中的值为8,b中的值为3,则程序运营后,a中的值为3,b中的值为8。
#include <stdio.h>
/*************found**************/
void fun(int x,int y)
{ int t;
/*************found**************/
t=x;x=y;y=t;
}
void main()
{ int a,b;
a=8;
b=3;
fun(&a, &b);
printf("%d %d\n ", a,b);
}
(1)void fun(int *x, int *y)
(2)t=*x; *x=*y; *y=t;
题目四 最大公约数问题
2. 下列给定程序中函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。
例如,若num1和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输出的最大公约数为27。
#include <stdio.h>
int fun(int a,int b)
{ int r,t;
if(a<b) {
/************found************/
t=a; b=a; a=t;
}
r=a%b;
while(r!=0)
{ a=b; b=r; r=a%b; }
/************found************/
return(a);
}
main()
{ int num1, num2,a;
printf("Input num1 num2: "); scanf("%d%d",&num1,&num2);
printf("num1= %d num2= %d\n\n",num1,num2);
a=fun(num1,num2);
printf("The maximun common divisor is %d\n\n",a);
(1)t=a;a=b;b=t;
(2)return(b);或return b;
题目五 长数变短数1
2. 下列给定程序中函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为87653142时,t中的数为7531。
#include <stdio.h>
void fun (long s, long *t)
{ int d;
long sl=1;
/************found************/
t = 0;
while ( s > 0)
{ d = s%10;
/************found************/
if (d%2 == 0)
{ *t = d * sl + *t;
sl *= 10;
}
s /= 10;
}
}
main()
{ long s, t;
printf("\nPlease enter s:"); scanf("%ld", &s);
fun(s, &t);
printf("The result is: %ld\n", t);
(1)*t=0;
(2)if(d%2!=0)或if(d%2==1)
题目五 长数变短数2
2.下列给定程序中函数fun的功能是:将长整型数中各位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为87653142时,t中的数:8642。
#include <stdio.h>
void fun (long s, long *t)
{ int d;
long sl=1;
*t = 0;
while ( s > 0)
{ d = s%10;
/************found************/
if (d%2=0)
{ *t=d* sl+ *t;
sl *= 10;
}
/************found************/
s \= 10;
}
}
main()
{ long s, t;
printf("\nPlease enter s:"); scanf("%ld", &s);
fun(s, &t);
printf("The result is: %ld\n", t);
}
(1)if(d%2==0)
(2)s/=10;
题目五 长数变短数3
2.下列下列给定程序中,函数fun的功能是:从低位开始依次取出长整型变量s中奇数位上的数,构成一个新数存放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为7654321时,t中的数为7531。
#include <stdio.h>
/************found************/
void fun (long s, long t)
{ long sl=10;
*t = s % 10;
while ( s > 0)
{ s = s/100;
*t = s%10 * sl + *t;
/************found************/
sl = sl*100;
}
}
main()
{ long s, t;
printf("\nPlease enter s:"); scanf("%ld", &s);
fun(s, &t);
printf("The result is: %ld\n", t);
}
(1)void fun(long s,long *t)
(2)sl=sl*10;
题目五 长数变短数4
2. 下列给定程序中函数fun的功能是:从低位开始依次取出长整型变量s中偶数位上的数,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为7654321时,t中的数为642。
#include <stdio.h>
/************found************/
void fun (long s, long t)
{ long sl=10;
s /= 10;
*t = s % 10;
/************found************/
while ( s < 0)
{ s = s/100;
*t = s%10*sl + *t;
sl = sl * 10;
}
}
main()
{ long s, t;
printf("\nPlease enter s:"); scanf("%ld", &s);
fun(s, &t);
printf("The result is: %ld\n", t);
}
(1)void fun(long s,long *t)
(2)while(s>0)
题目五 长数变短数5
1. 下列给定程序中,函数fun的功能是:将字符串s中位于奇数位置的字符或ASCII码值为偶数的字符依次放入字 符串t中。例如,字符串中的数据为"AABBCCDDEEFF",则输出应当是"ABBCDDEFF"。
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#define N 80
void fun(char *s, char t[])
{
int i, j=0;
for(i=0; i<(int)strlen(s);i++)
/*************found**************/
if(i%2 && s[i]%2==0)
t[j++]=s[i] ;
/*************found**************/
t[i]='\0';
}
void main()
{
char s[N], t[N];
system("CLS");
printf("\nPlease enter string s :");
gets(s);
fun(s,t);
printf("\nThe result is :%s\n",t);
}
(1)if(i%2||s[i]%2==0) 或 if(i%2 !=0 || s[i]%2==0)
(2)t[j]='\0'; 或 t[j]=0;
题目五 长数变短数6
1. 下列给定程序中,函数fun的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
void fun(char *s)
{int i,j;
for(i=0,j=0; s[i]!= '\0'; i++)
if(s[i]>= '0'&&s[i]<= '9')
/*************found**************/
s[j]=s[i];
/*************found**************/
s[j]=”\0”;
}
void main()
{char item[80];
system("CLS");
printf("\nEnter a string: ");gets(item);
printf("\n\nThe string is:%s\n",item);
fun(item);
printf("\n\nThe string of changing is :%s\n",item);
}
(1)s[j++]=s[i];
(2)s[j]= '\0';
题目五 长数变短数7
2. 下列给定程序中,函数fun的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。
#include <stdio.h>
long fun(int x, int y, long *p)
{ int i;
long t=1;
/*************found**************/
for(i=1;i<y;i++)
t=t*x;
*p=t;
/*************found**************/
t=t/1000;
return t;
}
void main()
{ long t, r; int x, y;
printf("\nInput x and y: ");
scanf("%1d%1d",&x,&y);
t=fun(x,y,&r);
printf("\n\nx=%d, y=%d,r=%ld, last=%ld\n\n ",x, y, r,t);
}
(1)for(i=1;i<=y;i++)
(2)t=t%1000;
题目五 长数变短数8
2. 给定程序MODI1.C中,fun函数的功能是:删除b所指数组中小于10的数据。主函数中输出删除后数组中余下的数据。
#include <stdio.h>
#include <stdlib.h>
#define N 20
int fun( int *b )
{
/**********found**********/
int t[N] ,i, num
for(i=0; i<N; i++)
if(b[i]>=10)
/**********found**********/
t[++num]=b[i];
/**********found**********/
for(i=0; i<nun; i++)
b[i]=t[i];
return( num );
}
main()
{ int a[N],i,num;
printf("a数组中的数据 :\n");
for(i=0;i<N ;i++) {a[i]=rand()%21; printf("%4d",a[i]);}
printf("\n");
num=fun(a);
for(i=0;i<num ;i++) printf("%4d",a[i]);
printf("\n");
}
(1)int t[N] ,i, num=0;
(2)t[num++]=b[i];或{t[num]=b[i]; num++;}
(3)for(i=0; i<num; i++)
题目五 长数变短数9
2. 给定程序MODI1.C中,fun函数的功能是:在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数相应的原三个数中的中间位置的数。解决后原数列中首尾2个数不变。解决后数列在主函数中输出。例如,有10个正整数如下:
初始数列为:6 5 7 23 18 5 8 21 45 38
第1组数为:6 5 7 中值为:6 替换后的数列为:6 6 7 23 18 5 8 21 45 38
第2组数为:5 7 23 中值为:7 替换后的数列为:6 6 7 23 18 5 8 21 45 38
第3组数为:7 23 18 中值为:18 替换后的数列为:6 6 7 18 18 5 8 21 45 38
第4组数为:23 18 5 中值为:18 替换后的数列为:6 6 7 18 18 5 8 21 45 38
第5组数为:18 5 8 中值为:8 替换后的数列为:6 6 7 18 18 8 8 21 45 38
第6组数为:5 8 21 中值为:8 替换后的数列为:6 6 7 18 18 8 8 21 45 38
第7组数为:8 21 45 中值为:21 替换后的数列为:6 6 7 18 18 8 8 21 45 38
第8组数为:21 45 38 中值为:38 替换后的数列为:6 6 7 18 18 8 8 21 38 38
最终结果为:6 6 7 18 18 8 8 21 38 38
请改正程序中指定部位的错误,使它能得出对的的结果。
#include <stdio.h>
#define N 10
int findmid(int a, int b, int c)
{ int t;
t = (a>b)?(b>c?b:(a>c?c:a)):((a>c)?a:((b>c)?c:b));
/**********found**********/
return b;
}
void fun(int x[])
{ int i,a,b,c,t[N];
/**********found**********/
for(i=0;i<N;i++) t[i]=x[i]
for(i=0;i<N-2;i++)
{ a=t[i];b=t[i+1];c=t[i+2];
/**********found**********/
t[i+1]=findmid(a,b,c);
}
}
main()
{ int i, x[N]={6,5,7,23,18,5,8,21,45,38};
for(i=0; i<N; i++) printf("%d ",x[i]);
printf("\n");
fun(x);
for(i=0; i<N; i++) printf("%d ",x[i]);
printf("\n");
}
【参考答案】
(1)return t; (2)for(i=0;i<N;i++) t[i]=x[i];
(3)x[i+1]=findmid(a,b,c);
题目六斐波拉契数列
2. 下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、……
例如,若给n输入7,则该项的斐波拉契数值为13。
#include <stdio.h>
long fun(int g)
{
/**********found**********/
switch(g);
{ case 0: return 0;
/**********found**********/
case 1 ;case 2 : return 1 ;
}
return( fun(g-1)+fun(g-2) );
}
main()
{ long fib; int n;
printf("Input n: "); scanf("%d",&n); printf("n = %d\n",n);
fib=fun(n);
printf("fib = %d\n\n",fib);
}
(1)去掉分号
(2)case 1:case 2:return 1;
题目七 链表1
1. 例如,若给a输入字符串:ABCDEFGKHIJK,调用函数后,字符数组b中的内容为:ABC DEF GHI JK。
N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:求出平均分,并由函数值返回。
#include <stdio.h>
void fun(char *p, char *b)
{ int i, k=0;
while(*p)
{ i=1;
while( i<=3 && *p ) {
/**********found**********/
b[k]=p;
k++; p++; i++;
}
if(*p)
{
/**********found**********/
b[k++]=" ";
}
}
b[k]='\0';
}
main()
{ char a[80],b[80];
printf("Enter a string: "); gets(a);
printf("The original string: "); puts(a);
fun(a,b);
printf("\nThe string after insert space: "); puts(b); printf("\n\n");
}
(1)b[k]=*p;
(2)b[k]=' ';k++;
题目七 链表2
2. 下列给定程序中函数Creatlink的功能是:创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。
#include <stdio.h>
#include <stdlib.h>
typedef struct aa
{ int data;
struct aa *next;
} NODE;
NODE *Creatlink(int n, int m)
{ NODE *h=NULL, *p, *s;
int i;
/**********found***********/
p=(NODE )malloc(sizeof(NODE));
h=p;
p->next=NULL;
for(i=1; i<=n; i++)
{ s=(NODE *)malloc(sizeof(NODE));
s->data=rand()%m; s->next=p->next;
p->next=s; p=p->next;
}
/**********found***********/
return p;
}
outlink(NODE *h)
{ NODE *p;
p=h->next;
printf("\n\nTHE LIST :\n\n HEAD ");
while(p)
{ printf("->%d ",p->data);
p=p->next;
}
printf("\n");
}
main()
{ NODE *head;
head=Creatlink(8,22);
outlink(head);
}
(1)p=(NODE *)malloc(sizeof(NODE));
(2)return h;
题目七 链表3
2. 下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不涉及头结点)数据域为偶数的值累加起来,并且作为函数值返回。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
typedef struct aa
{ int data;
struct aa *next;
} NODE;
int fun (NODE *h)
{ int sum=0;
NODE *p;
p=h->next;
/*************found**************/
while(p->next)
{ if(p->data%2==0)
sum+=p->data;
/*************found**************/
p=h->next;
}
return sum;
}
NODE *creatlink(int n)
{
NODE *h,*p,*s;
int i;
h=p=(NODE*)malloc(sizeof(NODE));
for(i=1;i<n;i++)
{
s=(NODE*)malloc(sizeof(NODE));
s->data=rand()%16;
s->next=p->next;
p->next=s;
p=p->next;
}
p->next=NULL;
return h;
}
outlink(NODE *h)
{ NODE *p;
p=h->next;
printf("\n\n The LIST :\n\n HEAD");
while(p)
{ printf("->%d",p->data);
p=p->next;}
printf("\n");
}
void main()
{ NODE *head; int sum;
system("CLS");
head=creatlink(10);
outlink(head);
sum=fun(head);
printf("\nSUM=%d",sum);
}
(1)while (p!=NULL)
(2)p=p->next;
题目七 链表4
2.下列给定程序的功能是:建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不涉及头结点)数据域中的最大值,并且作为函数值返回。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
typedef struct aa
{ int data;
struct aa *next;
} NODE;
fun (NODE *h)
{ int max=-1;
NODE *p;
/*************found**************/
p=h;
while(p)
{ if(p->data>max)
max=p->data;
/*************found**************/
p=h->next;
}
return max;
}
outresult(int s, FILE *pf)
{ fprintf(pf, "\nThe max in link :%d\n",s);
}
NODE *creatlink(int n, int m)
{ NODE *h,*p,*s;
int i;
h=p=(NODE *)malloc(sizeof(NODE));
h->data=9999;
for(i=1;i<=n;i++)
{ s=(NODE *) malloc(sizeof(NODE));
s->data=rand()%m; s->next=p->next;
p->next=s; p=p->next;
}
p->next=NULL;
return h;
}
outlink(NODE *h,FILE *pf)
{ NODE *p;
p=h
展开阅读全文