标题:[求助]几个C编程的小问题
只看楼主
dqsy9990128
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-2-16
 问题点数:0 回复次数:2 
[求助]几个C编程的小问题
现有几道复习题不会做 请高人指点!!!!万分感谢!
1.以下程序由终端键盘输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志。请填空。
??#include
??main( )
??{  FILE * fp;
??  char ch,fname [10];
??  printf("Input the name of file\n");
??  gets(fname);
??  gets(fname);
??  if((fp=[5])= =NULL)
??  {  printf("Cannot open\n"); exit(0); }
??  printf("Enter data\n");
??  while((ch=getchar())!='#')
??  fputc([6],fp);
??  fclose(fp);
??}
2.设有以下定义:
??int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
??int (*prt)[3]=a, * p=a[0];
??则下列能够正确表示数组元素a[1][2]的表达式是
??A)*((* prt + 1)[2]) B)*(*(p+5)) C)(* prt + 1)+2 D)*(*(a+1)+2)
3.改错题
??下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如:若a中的字符串为:aBCDeFgH,b中的字符串为:ABcd,则c中的字符串应为:aBcdeFgH.请改正程序中的错误,使它能得到正确结果,注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
??试题程序:
??#include
??#include
??void fun (char *p, char *q, char *c)
??{  int k=1;
??  while(*p! = *q)
??  {  if ( *p!< *q) c[k]= *q;
??    else c[k]= *p;
??    if(*p) p++;
??    if(*q) q++;
??    k++;
??  }
??}
??main( )
??{  char a[10]="aBCDeFfH",b[10]="ABcd",c[80]={"\ 0"};
??  fun (a,b,c);
??  printf("The string a:");puts (a);
??  ptintf("The string b:");puts (b);
??  printf("The result :");puts(c);
}
搜索更多相关主题的帖子: include 复习题 键盘 
2006-02-16 10:07
ADALE
Rank: 2
等 级:新手上路
威 望:4
帖 子:483
专家分:0
注 册:2005-11-18
得分:0 
以下是引用dqsy9990128在2006-2-16 10:07:00的发言:
现有几道复习题不会做 请高人指点!!!!万分感谢!
1.以下程序由终端键盘输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志。请填空。 //文件这章我是自学的,不知道对否
??#include
??main( )
??{  FILE * fp;
??  char ch,fname [10];
??  printf("Input the name of file\n");
??  gets(fname);
??  gets(fname);
??  if((fp=[5])= =NULL) // fopen(fname,"w")
??  {  printf("Cannot open\n"); exit(0); }
??  printf("Enter data\n");
??  while((ch=getchar())!='#')
??  fputc([6],fp); // ch
??  fclose(fp);
??}
2.设有以下定义:
??int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
??int (*prt)[3]=a, * p=a[0];
??则下列能够正确表示数组元素a[1][2]的表达式是 D
??A)*((* prt + 1)[2]) B)*(*(p+5)) C)(* prt + 1)+2 D)*(*(a+1)+2)
3.改错题
??下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如:若a中的字符串为:aBCDeFgH,b中的字符串为:ABcd,则c中的字符串应为:aBcdeFgH.请改正程序中的错误,使它能得到正确结果,注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
??试题程序:
??#include
??#include
??void fun (char *p, char *q, char *c)
??{  int k=1;
??  while(*p! = *q) //可能是缺了结束条件吧
??  {  if ( *p!< *q) c[k]= *q;
??    else c[k]= *p;
??    if(*p) p++;
??    if(*q) q++;
??    k++;
??  }
??}
??main( )
??{  char a[10]="aBCDeFfH",b[10]="ABcd",c[80]={"\ 0"};
??  fun (a,b,c);
??  printf("The string a:");puts (a);
??  ptintf("The string b:");puts (b);
??  printf("The result :");puts(c);
}


喜欢宁静的平凡生活
2006-02-16 10:38
Almeida
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-2-16
得分:0 

我就第三题给你编了一个正确的! 但在原有的功能上加了一个可以任意输入 两组字符串进行比较!
源代码如下:
#include<stdio.h>
#include<string.h>
void fun (char *p, char *q, char *c)
{int k=0,num;
if(strlen(p)>strlen(q))
num=strlen(p);
else num=strlen(q);
while(k<num)
{
if ( *p< *q) c[k]= *q;
else c[k]= *p;
p++;
q++;
k++;
}
}
main( )
{ char a[10],b[10],c[80];
gets(a);
gets(b);
fun (a,b,c);
printf("The string a:");puts (a);
printf("The string b:");puts (b);
printf("The result :");puts(c);
}

QQ:493225151 共同为我国基础编程事业作出自己应有的贡献!!


QQ:493225151 为我国基础编程事业作出自己应有的贡献! Chinese is the best !
2006-02-16 12:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-45739-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.123972 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved