问答题编程题
请编写一个函数fun(),它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较短的字符串。若两个字符串长度相等,则返回第1个字符串。
例如,输入nanjing nanchang (为回车键),函数将返回nanjing。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
char *fun(char *s, char *t)
{
}
main()
{
char a[20],b[10],*p,*q;
int i;
printf("Input 1th string: ");
gets(a);
printf("Input 2th string: ");
gets(b);
printf("%s",fun(a,b));
}
问答题函数fun的功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后C=4152。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>void fun(int a,int b,long*c){}main(){ int a,b; long c; printf("Input a,b:"); scanf("%d%d",&a,&b); fun(a,b,&C); printf("The result is:%d\n",c);}
问答题
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#define N 8
typedef struct
{ char num[10];
double s;
} STREC;
double fun(STREC *a,STREC *b,int *n)
{
}
main()
{STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}};
STREC h[N],t;FILE *out;
int i,j,n;double ave;
ave=fun(s,h,
printf("The %d student data which is lower than %7.3f:/n",n,ave);
for(i=0;i<n;i++)
printf("%s %4.1f/n",h[i].num,h[i].s);
printf("/n");
out=fopen("out.dat","w");
fprintf(out,"%d/n%7.3f/n",n,ave);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(h[i].s>h[j].s){t=h[i];h[i]=h[j];h[j]=t;}
for(i=0;i<n;i++)
fprintf(out,"%4.1f/n",h[i].s);
fclose(out);
}
问答题请编写一个函数int fun(int *s,int t,int *k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。 例如,输入如下整数: 876 675 896 101 301 401 980 431 451 777 则输出结果为6,980。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include <conio.h> #include <stdio.h> int fun(int *s,int t,int *k) main() int a[10]= 876,675,896,101,301,401, 980,431,451,777,k; clrscr(); fun(a, 10, printf("%d, %d/n ", k, a[k]);
问答题请编写函数fun(),它的功能是:实现两个字符串的连接(不使用库函数strcat()),即把p2所指的字符串连接到p1所指的字符串后。
例如,分别输入下面两个字符串:
FirstString
--
SecondString
则程序输出:
FirstString
--
SecondString
[注意] 部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
[试题源程序]
#include<stdio.h>
#include<conio.h>
void fun(char p1[], char p2[])
{
}
main()
{
char s1[80], s2[40];
clrscr();
printf("Enter s1 and s2:/n");
scanf("%s%s", s1, s2);
printf("s1=%s/n", s1);
printf("s2=%s/n", s2);
printf("Invoke fun(s1, s2):/n");
fun(s1, s2);
printf("After invoking:/n");
printf("%s/n", s1);
}
问答题已知一个数列从第0项开始的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和。给定程序MODI1.C中函数fun的功能是:计算并输出该数列前n项的平方根之和。n的值通过形参传入。 例如,当n=10时,程序的输出结果应为:23.197745。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #include<math.h>3 /**********found**********/4 fun(int n)5 {double sum,s0,s1,s2,s;int k;6 sum=1.0;7 if(n<=2)sum=0.0;8 s0=0.0;s1=0.0;s2=1.0 ;9 for(k=4;k<=n;k++)10 { s=s0+s1+s2;11 sum+=sqrt(s);12 s0=s1;s1=s2;s2=s;13 }14 /**********found**********/15 return sum16 }17 main()18 { int n;19 printf(''Input N='');20 scanf(''%d'',&n);21 printf(''%f\n'',fun(n));22 }
问答题下列给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为“def35adh3kisdf7”,执行后结果为“def3*5*adh3*klsdf7*”。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #include<sedio.h> void fun(char*s) int i,j,n; for(i=0;s[i]='/0';i++) /********found********/ if(s[i]>='0' (1) s[i](='9') n=0; /********found********/ while(S[i+1+n]!* (2) ) n++; for(j=i+n+1;j>i;j--) /********found********/ s[j+1]= (3) ; s[j+1]='*' i=i+1; main() char s[60]="def35adh3kisdf7"; printf("/nThe original string is:%s/n",s); fun(s); printf(/nThe result is:%s/n",s);
问答题下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里"单词"是指由空格隔开的字符串)。例如,若输入"I ama student to takethe examination",则应输出"I Am A Student To TakeThe Examination"。 请改正程序中的错误,使程序能得出正确的结果。 注意:部分源程序在文件MODI1.C中,不要改动maln函数,不得增行或删行,也不得更改程序的结构! 试题程序:#include < stdlib.h >#include < string.h >#include < conio.h >#include < ctype.h >#include < stdio.h >#include < string.h >/*********found*********/void upfst (char p){ int k=0;for(;*P;P++) if(k) { {if(*P=='') k=0;} else {if(*P!='') { k =1; *p = toupper (*p) ; } }}void main () { char chrstr[ 81 ] ; system ("CLS") ; printf ( " / nPleaSe enter an English text line: ") ; gets (chrstr) ; printf ( " /nBofore changing: /n %s ", chrstr) ; upfst (clhrstr) ; printf ( " /nAfter changing: /n%s /n", chrstr) ;}
问答题请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17,5,则应输出:19,23,29,31,37。 注意:部分源程序在文件PROG1.C文件中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include <stdio.h>void fun (int m, int k, int xx [ ] ){}main (){int m, n, zz[1000] ;voidNONO (); printf("/nPlease enter two integers:");scanf("%d %d", fun(m, n, zz) ;for(m = 0 ; m < n ; m++) printf("%d ", zz[m]);printf("/n");NONO();}void NONO (){/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/int m, n, zz[1000], i ; FILE *rf, *wf ; rf = fopen("in.dat","r") ; wf = fopen("out.dat", "w"); for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d%d", fun(m, n, zz);for(m = 0 ; m < n ; m++)fprintf (wf, "%d ", zz[m]);fprintf(wf, "/n"); }fclose (rf); fclose(wf); }
问答题给定程序MODI1.C中函数fun的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串:若未找到,则函数值为NULL。
例如,当字符串中的内容为“abcdabfabcdx”,t中的内容为“ab”时,输出结果应是“abcdx”。
当字符串中的内容为“abcdabfabcdx”,t中的内容为“abd”时,则程序输出未找到信息“not be found!”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
char * fun (char *s, char *t)
{
char *p, *r, *a;
/************found************/
a = Null;
while (*s)
{ p = s; r = t;
while (*r)
/************ found************/
if (r == p)
{ r++; p++;}
else break;
if (*r == '/0') a = s;
- s++;
}
return a ;
}
main()
{
char s[100], t[100], *p;
printf("/nPlease enter string
S :"); scanf("%s", s);
printf ("/nPlease enter substring
t :"); scanf("%s", t);
p = fun(s, t);
if (p) printf("/nThe result
is : %s/n", p);
else printf("/nNot found !/n");
}
问答题编写函数fun,其功能是:将S所指字符串中除了下标为奇数同时ASCII码值也为奇数的字符之外,其余的所有字符全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。 例如,若S所指字符串的内容为 “ABCDEFGl2345”,其中字符A的ASCII码值为奇数,但所在元素的下标为偶数,因此需要删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指数组中的内容应为“135”。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序:#include < conio.h >#include < stdio.h >#include < string.h >void fun(char * s,char t[]){}msin(){char s[100],t[100]; printf("inPlease enter string s:");Scanf("%s",s); fun(s,t);printf("knThe result is:%s/n",t);}
问答题给定程序中,函数fun的功能是:求出形参SS所指字符串数组中最长字符串的长度,将其余字符串右边用字符 “*”补齐,使其与最长的字符串等长。ss所指字符串数组中共有M个字符串,且串长
#include
#define M 5
#define N 20
void fun (char (*ss) [N] )
{ int i,j,n. len=0;
{ len=strlen (ss [i] ) ;
if (i==0) n=len;
if (len>n) n=len;
}
for(i=0;i
问答题下列给定程序中,函数fun的功能是:在带头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<stdlib.h>
#define N 8
typedef struer liSt
{ int data;
struct list *next;
}SLIST;
SLIST*creatlist(char*);
void outlist(SLIST*);
int fun(SLIST*h,char ch)
{ SLIST*P; int n=0;
P=h->next ;
/*********found*********/
while(p!=
【1】
)
{ n++;
/*********found*********/
if(P->data==ch)
return
【2】
;
else P=P->next;
}
return 0;
}
main()
{ SLIST*head;int k;char ch;char a[N]={'m','p','g','a','w','x','r','d'};
head=creatlist(a);
outliSt(head);
printf("Enter a letter:");
scanf("%c",&ch);
/*********found*********/
k=fun(
【3】
);
if(k==0)
printf("\nNot found!\n");
else
printf("The sequence number is:%d\n",k);
}
SLIST*creatlist(char*a)
{ SLIST*h,*p,*q;int i;
h=p=(SLIST*)malloc(sizeof(SLIST));
for(i=0;i<N;i++)
{ q=(SLIST*)malloc(sizeof(SLIST));
q->data=a[i];P->next=q;
p=q;
}
P->next=0;
return h;
}
void outlist(SLIST*h)
{ SLIST*P;
P=h->next;
if(P==NULL)
printf("\nThe list is NULL!\n");
else
{printf("\nHead");
do
{ printf("->%C",
p->data);p=p->next;}
while(P!=NULL);
printf("->End\n"”);
}
}
问答题请编写一个函数fun,它的功能是:将SS所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。 例如,若输入“abc4Efg”,则应输出”aBc4EFg”。 注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序:#include<conio.h>#include<stdio.h>#include<string.h>#include<stdlib.h>void fun(char*ss){}void main(){ FILE*wf; char tt[81],s[81]=“ab04Efg”; system(“CLS”); printf(“\nPlease enter an string within 80characters:\n”); gets(tt); printf(“\nAfter chang,the string\n%s”。tt); fun(tt); printf(“\nbecomes\n%s\n”,tt);/******************/wf=fopen(“out.dat”,”W”);fun(s);fprintf(wf,“%s”,s);fclose(wf);/******************/
问答题程序通过定义学生结构体数组,存储若干名学生的学号、姓名和三门课的成绩。函数fun的功能是:将存放学生数据的结构体数组,按姓名的字典序(从小到大)排序。 请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 试题程序: #include<stdio.h> #include<string.h> struct student{ long sno; char name[10]; float score[3]; }; void fun(struct student a[],int n) { /******found******/ 【1】t; int i,j; /******found******/ for(i=0;i<【2】;i++) for(j=i+1;j<n;j++) /******found******/ if(strcmp(【3】)>0) {t=a[i];a[i]=a[j];a[j]=t;) } main() { struct student s[4]={{10001,"ZhangSan”,95,80,88),{10002,"LiSi",85,70,78),{10003,"CaoKai",75,60,88},{10004,"FangFang",90,82,87}}; int i,j; printf("The original data:\n"); for(j=0;j<4;j++) { printf("\nNo:%ld Name:%一8sScores:",s[j].sno,s[j].name); for(i=0;i<3;i++) printf("%6.2f",s[j].score[i]); printf("\n"); } fun(s,4); printf("The data after sorting:\n"); for(j=0;j<4;j++) { printf("\nNo:%ld Name:%一8sScores:”,s[j].sno,s[j].name); for(i=0;i<3;i++) printf("%6.2f",s[j].score[i]); printf("\n"); } }
问答题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp)。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#define N 1 6
typedef struct
{ char num[10];
int s;
} STREC ;
STREC fun(STREC*a,char*b)
{
}
main()
{STREC s[N]={{"GA005",85},{"GA003",76},
{"GA002",69),{"GA004",85),{"GA001",91),
{"GA007",72),{"GA008",64},{"GA006",87},
{"GA015",85),{"GA013",91},{"GA012",64),
{"GA014",91),{"GA011",77),{"GA017",64),
{"GA018",64),{"GA016",72)};
STREC h;
char m[10];
int i;FTLE*out;;
printf("tThe original data:/n");
for(i=0; i
问答题编写程序, 实现矩阵(3行3列)的转置(即行列互换)
例如, 输入下面的矩阵:
100 200 300
400 500 600
700 800 900
程序输出:
100 400 700
200 500 800
300 600 900
注意: 部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include
int fun(int array[3][3])
{
}
main()
{
int i,j;
int array[3][3]={{100,200,300},
{400,500,600},
{700,800,900}};
for (i=0;i<3;i++)
{ for (j=0;j<3;j++)
printf("}",array[i][j]);
printf("/n");
}
fun(array);
printf("Converted array:/n");
for (i=0;i<3;i++)
{ for (j=0;j<3;j++)
printf("}",array[i][j]);
printf("/n");
}
NONO();
}
问答题下列给定程序中,函数fun的功能是:将s所指字符串中的所有数字字符移到所有非数字字符之后,开保持数字字符串和非数字字符串原有的次序。例如,s所指的字符串为“def35adh3kjsdf7”,执行后结果为“defadhajsdf3537”。请在程序的下划线处填人正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构! #include<stdio.h> void fun(char*s) { int i,j=0,k=0;char tl[80],t2[80]; for(i=0;s[i]!=‘\0’;i++) if(s[i]>=D‘&&s[i]<=9’) { /****************ound******************/ t2[j]=s[i];[1]; } else t1[k++]=s[i]; t2[j]=0;t1[k]=0; /******************found******************/ for(i=0;i<k;i++)[2]; /******************found******************/ for(i=0;i<一[3];i++)s[k+i]:t2[i]; } main() { char s[80]=“ba3a54j7sd567sdffs”; printf(“\nThe original string is:%s\n”,s); fun(s); printf(“\nThe result is:%s\n”,s); }
问答题给定程序MODI1.C中函数fun的功能是:求出以下分数序列的前n项之和。和值通过函数值返回main函数。例如,n=10,则输出16.479905。/************found************/fun(intn){inta,b,c,k;doubles;s=0.0;a=2;b=1;for(k=1;k<=n;k++){/***********found************/s=s+(Double)a/b;}}main(){intn=10;clrscr();printf("/nThevalueoffunctionis:%lf/n",fun(n));}
问答题请编写函数fun,函数的功能是将大于形参m且紧靠m的k个素数存入xx所指的数组中。函数prime判断一个数是否为素数,是返回1,否则返回0。例如,若输入17,5,则应输出19,23,29,31,37。函数fun中给出的语句仅供参考。
注意:部分源程序存在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入编写的若干语句。
给定源程序如下。
#include<stdio.h>
int prime(int n)
{
int m;
for(m=2;m<n;m++)
if(n%m==0)
return 0;
return 1;
}
void fun(int m,int k,int xx[])
{
/*以下代码仅供参考*/
int j=0,t=m+1;
while(j<k)
{
/*按题目要求完成以下代码*/
}
}
main()
{
int m,n,zz[1000];
printf("/nPlease enter two integers:");
scanf("%d%d",
fun(m,n,zz);
for(m=0;m<n;m++)
fprintf("%d",zz[m]);
printf("/n");
}
