问答题程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。
例如:b所指变量t中的学号、姓名、和三门课的成绩依次是:10002、"ZhangQi"、93、85、87,修改后输出t中的数据应为:10004、"LiJie"、93、85、87。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在
下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <string.h>
struct student {
long sno;
char name[10];
float score[3];
};
void fun(struct student *b)
{
/**********found**********/
b______=10004;
/**********found**********/
strcpy(b______,"LiJie");
}
main()
{ struct student t={10002,"ZhangQi",93,85,87};
int i;
printf("/n/nThe original data:/n");
printf("/nNo:%ld Name:%s/nScores:",t.sno,t.name);
for(i=0;i<3;i++) printf("%6.2f",t.score[i]);
printf("/n");
/**********found**********/
fun(______);
printf("/nThe data after modified:/n");
printf("/nNo:%ld Name:%s/nScores:",t.sno,t.name);
for(i=0;i<3;i++) printf("%6.2f",t.score[i]);
printf("/n");
}
问答题
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。
例如,字符串中的内容为:****A*BC*DEF*G*******,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为7,则字符串中的内容仍为:****A*BC*DEF*G*******。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
void fun(char *a, int n)
{
}
main()
{char s[81]; int n;
void NONO();
printf("Enter a string:/n"); gets(s);
printf("Enter n:"); scanf("%d",
fun(s, n);
printf("The string after deleted:/n"); puts(s);
NONO();
}
void NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in, *out;
int i, n; char s[81];
in=fopen("in.dat", "r");
out=fopen("out.dat", "w");
for(i=0; i<10; i++) {
fscanf(in, "%s", s);
fscanf(in, "%d",
fun(s, n);
fprintf(out, "%s/n", s);
}
fclose(in);
fclose(out);
}
问答题给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量S中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。 例如,当s中的数为:7654321时,t中的数为:642。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 /*********found*********/3 void fun(long s,long t)4 { long s1=10;5 s/=10;6 *t=s%10;7 /*********found*********/8 while(s<0)9 { s=s/100;10 *t=s%10 *s1+*t;11 s1=s1 * 10;12 }13 }14 main()15 {long s,t;16 printf(''\nPlease enter s:''); scanf(''%1d'',&s);17 fun(s,&t);18 printf(''The result is:%1d\n'',t);19 }
问答题
请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入"abc4EFg",则应输出"aBc4EFg"。
注意:部分源程序存在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
#include<string.h>
void fun(char *ss)
{
}
main()
{char tt[81];
void NONO();
printf("/nPlease enter an string within 80 characters:/n"); gets(tt);
printf("/n/nAfter changing, the string/n"%s" ", tt);
fun(tt);
printf("/nbecomes/n"%s"/n", tt);
NONO();
}
VOid NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf;
char tt[81];
int i;
fp=fopen("in.dat", "r");
wf=fopen("out.dat", "w");
for(i=0; i<10; i++) {
fscanf(fp, "%s", tt);
fun(tt);
fprintf(wf, "%s/n", tt);
}
fclose(fp);
fclose(wf);
}
问答题给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
typedef struct aa
{ int data;struct aa*next;}NODE;
int fun(NODE*h)
{ int sum=0;
NODE*p;
/**********found**********/
p=h;
while(P)
{ 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;idata=rand()%16;
s->next=p->next;
P->next=s;
p=p->next;
}
P->next=NULL;
return h;
}
outlink(NODE*h,FILE*pf)
{NODE*p;
p=h->next;
fprintf(pf,”/n/nTHE LIST:/n/n
HEAD”);
while(P)
{ fprintf(pf,"->%d",p->data);
p=p->next;)
fprintf(pf,"/n");
}
outresult(int s,FILE*pf)
{ fprintf(pf,”/nThe SLIm of even
numbers : %d/n¨,s);}
main()
{NODE*head;int evirl;
head=creatlink(12);
head->data=,9 0 0 0;
outlink(head,stdout);
even=fun(head);
printf("/nTh.e result:/n");
outresult(even, stdout);
}
问答题请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串"-1234",则函数把它转换为整数值 -1234。函数fun中给出的语句仅供参考。
注意: 部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include
#include
long fun ( char *p)
{int i, len, t; /* len为串长,t为正负标识 */
long x=0;
len=strlen(p);
if(p[0]=='-')
{ t=-1; len--; p++; }
else t=1;
/* 以下完成数字字符串转换为一个数字 */
return x*t;
}
main() /* 主函数 */
{ char s[6];
long n;
printf("Enter a string:\n") ;
gets(s);
n = fun(s);
printf("%ld\n",n);
NONO ( );
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i ;
char s[20] ;
long n ;
fp = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp, "%s", s) ;
n = fun(s);
fprintf(wf, "%ld\n", n) ;
}
fclose(fp) ;
fclose(wf) ;
}
问答题请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCH码降序排列。 例如,原来的字符串为:CEAedca,排序后输出为:CedcEAa。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。1 #include<stdio.h>2 #include<ctype.h>3 #include<string.h>4 void fun(char *s,int num)5 {67 }8 NONO()9 {10 /*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/11 char s[10];12 FILE *rf,*wf ;13 int i=0;14 rf=fopen(''in.dat'',''r'');15 wf=fopen(''out.dat'',''w'');16 while(i<10) {17 fgets(s,10,rf);18 s[7]=0 ;19 fun(s,7);20 fprintf(wf,''%s\n'',s);21 i++;22 }23 fclose(rf);24 fclose(wf);25 }26 main()27 {28 char s[10];29 printf(''输入7个字符的字符串:'');30 gets(s);31 fun(s,7);32 printf(''\n%s'',s);33 NONO();34 }
问答题请编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的ASCII代码值,每行输出三对。
问答题请编写函数fun(),该函数的功能是:将s所指字符串中 ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为ABCDEFGl2345,其中字符B的ASCⅡ码值为偶数、…、字符2的ASCⅡ码值为偶数、…,都应当删除,其他依次类推。最后t所指的数组中的内容应是ACEGl35。 注定:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序; #include <stdio. h> #include<string.h> #include<conio. h> void fun(char *s, char t[]) main ( ) char s[100],t [100]; clrscr (); printf (,/nPlease enter string S: "); scanf ("%s", s); fun(s,t); printf ("/nThe result is :%s/n",t);
问答题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。 注意:部分源程序在文件PROG1.C文件中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。1 #include<stdio.h>2 #define N 163 typedef struct4 { char num[10];5 int s;6 } STREC;7 void fun(STREC a[])8 {9 }10 main()11 {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'',66},{''GA017'',64},{''GA018'',64},{''GA016'',72}};12 int i;FILE *out;;13 fun(s);14 print;f(''The data after sorted:\n'');15 for(i=0; i<N;i++)16 { if((i)%4==0)printf(''\n'');17 printf(''%s%4d'',s[i].num,s[i].s);18 }19 printf(''\n'');20 out=fopen(''out.dat'',''w'');21 for(i=0;i<N;i++)22 {if((i)%4==0 && i) fprintf(out,''\n'');23 fprintf(out,''%4d'',s[i].s);}24 fprintf(out,''\n'');25 fclose(out);}
问答题下列给定程序的功能是:读入一个整数k(2≤k≤10000),输出它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出:2,3, 5,7,11。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序:#include < conio.h >#include < stdio.h >/*********found*********/IS Prime(int n);{ int i,m; m=1; for(i=2;i < n;i++)/*********found*********/ if! (n%i) {m=0;break;} return(m);}main(){ int j,k; printf ("/nPlease enter aninteger number between 2and 1 0000:"); scanf("%d",&k); printf f"/n、nThe prime factot(s)of%d is(are):",k); for(j=2;j < k;j++) if((!(k%j))&&(IsPrirae(j))) printf("%4d,",j); printf("/n");}
问答题函数fun()的功能是:将s所指字符串中除了下标为奇数,同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必须删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除;以此类推,最后t所指数组中的内容应是“135”。 #include<stdio.h> #include<string.h> void fun(char*s,char t[]) main() char s[100],t[100];void NONO(); printf("/nPlease enter string S:");scanf("%s",s); fun(s,t); printf("/nThe result is:%s/n",t);
问答题下列给定程序中,函数fun的功能是:在整数10到55之间,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定函数中a1放个位数,a2放十位数。 请改正程序中的错误,使它能得出正确的结果。 注意:不得增行或删行,也不得更改的程序的结构! 试题程序:#include<stdio.h>int fun(int*b){ int k,al,a2,i=0; for(k=10;k<=55;k++) {/******found******/ a2=ICl 0; al=k—a2 * 10: if((k%3==0&&a2==5)‖(k%3==0&&al==5)) {b[i]=k;i++;} }/******found******/ return k;}main(){ int a[100],k,m; m=fun(a); prinff(“The result is:\n”); for(k=0;k<m;k++) prinff(“%4d”,a[k]);printf(“\n”);}
问答题给定程序中,函数fun的功能是:判定形参a所指的N×N(规定N为奇数)的矩阵是否是“幻方”,若是,函数返回值为1;不是,函数返回值为0。“幻方”的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。
例如,以下3×3的矩阵就是一个“幻方”:
4 9 2
3 5 7
8 1 6
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在
下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define N 3
int fun(int(*a)[N])
{ int i, j, m1, m2, row, colum;
m1=m2=0;
for(i=0; i<N; i++)
{ j=N-i-1; m1+=a[i][i]; m2+=a[i][j];}
if(m1!=m2)return 0;
for(i=0; i<N; i++){
/**********found**********/
row=colum=______;
for(j=0; j<N; j++)
{row+=a[i][j]; colum+=a[j][i];}
/**********found**********/
if((row!=colum)______(row!=m1))return 0;
}
/**********found**********/
return______;
}
main()
{int x[N][N], i, j;
printf("Enter number for array: /n");
for(i=0; i<N; i++)
for(j=0; j<N; j++) scanf("%d",
printf("Array:/n");
for(i=0; i<N; i++)
{for(j=0; j<N; j++)printf("%3d", x[i][j]);
printf("/n");
}
if(fun(x))printf("The Array is a magic square./n");
else printf("The Array isn"t a magic square./n");
}
问答题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号; 若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。函数fun中给出的语句仅供参考。
例如,字符串中的内容为:*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为:*******A*BC*DEF*G****。n的值在主函数中输入。 在编写函数时,不得使用C语言提供的字符串函数。
注意: 部分源程序在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include
void fun( char *a, int n )
{
/* 以下代码仅供参考 */
int i=0,j,k=0;
while(a[k]=='*') k++; /* k为统计*字符个数 */
if(k>n)
{
i=n;j=k;
/* 以下完成将下标为k至串尾的字符前移k-n个位置 */
}
}
main()
{ char s[81]; int n;
printf("Enter a string:/n");gets(s);
printf("Enter n : ");scanf("%d",
fun( s,n );
printf("The string after deleted:/n");puts(s);
NONO();
}
问答题请编写函数proc(),该函数的功能是:将两个两位数的正整数num1,num2合并形成一个整数放在num中。合并的方式是:将num1数的十位和个位数依次放在num数的十位和千位上,num2数的十位和个位数依次放在c数的百位和个位上。
例如,当num1=64,num2=18时,调用到该函数后,num=4168。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
void proc(int num1,int num2,long*num)
{
}
void main()
{
int num1,num2;
long num;
system("CLS");
printf("Input num1,num2:");
scanf("%d%d",
proc(num1,num2,
printf("The result is:%1d/n",num);
}
问答题给定程序MODI1.C中函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为87653142时,t中的数为7531。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#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",
fun(s,
printf("The result is:%ld/n",t);
}
问答题编写一个函数fun(),它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。 例如,分别输入下面两个字符串: FirstString SecondString 则程序输出: FirstStringSecondString 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号小填入所编写的若干语句。 试题程序: #include <stdio. h> #include<conio. h> void fun (char pi[],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);
问答题给定程序MODI1.C中函数fun的功能是:读入整数k(2≤k≤10000),打印它的所有质因子(即所有素数的因子),例如,若输入整数2310,则应输出:2,3,5,7,11。
#include"conio.h"
#include”stdio.h”
/************found************/
IsPrime(int n);
{ int i,m;
m=1;
for(i=2;i<n;i++)
/************found************/
if !(n%i)
{m=0;break;}
return (m);
}
main()
{ int j,k;
clrscr();
printf("/nPlease input a unmber between 2 and 10000:");
scanf("%d",j<=k;j++)
if((!k%j))&&(IsPrime(j))) printf("/n%4d",j);
printf("/n");
}
问答题编写函数fun,其功能是:将a、b两个两位正整数合并成一个新的整数放在C中。合并的方式是:将a中的十位和个位数依次放在变量c的干位和十位上,b中的十位和个位数依次放在变量C的个位和百位上。
例如,当a=45,b=12,调用该函数后c=4251。
注意:部分源程序给出如下。
请勿改动主函数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:%ld/n",c);
}
