C语言编程问题

程序改错(在FOUND下的程序中找到错误并改正):
1题目:将一个字符串中的大写字母转换成小写字母。例如:输入aSdFG输出为asdfg。
#include<stdio.h>
/********FOUND*******/
bool fun(char *c)
{if(*c<='Z'&&*c>='A')*c-='A'-'a';
/*******FOUND********/
fun= c;
}
main()
/******FOUND********/
char s[81],*p=s;
gets(s);
while(*p)
{*p=fun(p);
/******FOUND*********/
puts(*p);
p++;
}
putchar('\n');
}
2题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)
#include "stdio.h"
main()
{float peven(),podd(),dcall();
float sum;
int n;
while (1)
{/*******FOUND*******/
scanf("%d",n);
if(n>1)
break;
}
if(n%2==0)
{printf("Even=");
sum=dcall(peven,n);
}
else
{printf("Odd=");
sum=dcall(podd,n);
}
printf("%f",sum);
getch();
}
float peven(int n)
{float s;
int i;
s=0;
for(i=2;i<=n;i+=2)
/*******FOUND********/
s+=1%(float)i;
return(s);
}
float podd(n)
int n;
{float s;
int i;
/*******FOUND********/
s=1;
for(i=1;i<=n;i+=2)
s+=1/(float)i;
return(s);
}
float dcall(fp,n)
float (*fp)();
int n;
{float s;
s=(*fp)(n);
return(s);
}
3.题目:给定程序MODI1.C中函数 fun 的功能是:输入两个双精度数,函数返回它们的平方和的平方根值。例如输入:22.936 和 14.121,输出为:y = 26.934415。
#include <stdio.h>
#include <conio.h>
#include <math.h>
/*******FOUND********/
double fun (double *a, *b)
{ double c;
/*******FOUND********/
c = sqr(a*a + b*b);
/******FOUND********/
return *c;
}
main ( )
{ double a, b, y;
clrscr( );
printf ( "Enter a, b : ");
scanf ("%lf%lf", &a, &b );
y = fun (&a, &b);
printf ("y = %f \n", y );
}
4题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)
#include "stdio.h"
main()
{float peven(),podd(),dcall();
float sum;
int n;
while (1)
{/******FOUND********/
scanf("%d",n);
if(n>1)
break;
}
if(n%2==0)
{printf("Even=");
sum=dcall(peven,n);
}
else
{printf("Odd=");
sum=dcall(podd,n);
}
printf("%f",sum);
getch();
}
float peven(int n)
{float s;
int i;
s=0;
for(i=2;i<=n;i+=2)
/******FOUND********/
s+=1%(float)i;
return(s);
}
float podd(n)
int n;
{float s;
int i;
/*******FOUND********/
s=1;
for(i=1;i<=n;i+=2)
s+=1/(float)i;
return(s);
}
float dcall(fp,n)
float (*fp)();
int n;
{float s;
s=(*fp)(n);
return(s);
}
5题目:给定程序MODI1.C中函数 fun 的功能是:根据整型形参 n,计算某一数据项的值。A[1]=1, A[2]=1/(1 + A[1]), A[3]=1/(1 + A[2]), …,A[n]=1/(1 + A[n-1])例如,若 n=10,则应输出:a10=0.617977。
#include <conio.h>
#include <stdio.h>
/*******FOUND********/
int fun ( int n )
{ float A=1; int i;
/*******FOUND*******/
for (i=2; i<n; i++)
/*******FOUND*******/
A = 1.0\(1+A);
return A ;
}
main( )
{ int n ;
clrscr( ) ;
printf("\nPlease enter n: ") ;
scanf("%d", &n ) ;
printf("A%d=%f\n",n, fun(n) ) ;
}

#include
<stdio.h>//缺少重要
头文件
#include
<string.h>#include
<stdlib.h>
int
SIZE;struct
student{
char
name[20];
int
xh;
int
yw;

//语文
int
sx;

//数学
int
yy;

//英语}*stud;
void
save();int
srsj();int
cxsj();int
main();int
gzcx();int
gzcx(){
int
i,a,b;
char
name[10]={0};
FILE
*fp;
if((fp=fopen("stu.dat","rb"))==NULL)
{
printf("无法打开此文件\n");
}
printf("\t\t\t<学生信息查询>\n\n\n\t\t\t查看姓名,
学号
\n");
for(i=0;i<SIZE;i++)
{
fread(&stud[i],sizeof(struct
student),1,fp);
printf("\t\t%s\n\t\t%d\n\t\t%d\n\t\t%d",stud[i].name,stud[i].xh,stud[i].sx,stud[i].yw,stud[i].yy);
}
printf("\n\t\t***************************************\n");
printf("\t\t请输入数字:1:按学号查询\n

2:按姓名查询\n");
printf("\t\t***************************************\n");
printf("你输入的数字:");
scanf("%d\n",&b);
switch(b)
case
1:
{
printf("请输入工号,查看工资清单\n\n");
printf("工号:");
scanf("%d\n",&a);
printf("\t\t<学生信息查询>\n");
for(i=0;i<SIZE;i++)
{
if(stud[i].xh==a)
{
printf("\t\t%s\n\t\t%d\n",stud[i].name,stud[i].xh);
}
}
break;
case
2:
{printf("请输姓中文姓名,查看学生信息查询\n\n");
printf("姓名:");
scanf("%s",name);
for(i=0;i<SIZE;i++)
{
if(strcmp(name,stud[i].name)==0)
{
printf("\t\t%s\n\t\t%d\n",stud[i].name,stud[i].xh);
}
}
}
}
printf("\n");
printf("\n\n\t\t***************************************\n");
printf("\t\t注意:但无法查询时,请按要求操作!或者是无此数据!\n");
printf("\t\t***************************************\n\n\n\n");
fclose(fp);
main();
return
0;}
void
save(){
FILE
*fp;
int
i;
if((fp=fopen("stu.dat","wb"))==NULL)
{
printf("cannot
open
file
\n");
return;
}
for(i=0;i<SIZE;i++)
if(fwrite(&stud[i],sizeof(struct
student),1,fp)!=1)
fclose(fp);}
int
srsj(){
int
i;
int
SIZE;
printf("输入学生格式:");
scanf("%d",&SIZE);
stud=new
struct
student[SIZE];
for(i=0;i<SIZE;i++)
scanf("%s%d%d%d%d",stud[i].name,&stud[i].xh,&stud[i].sx,&stud[i].yw,&stud[i].yy);
save();
return
0;}
int
cxsj(){
int
i;
FILE
*fp;
if((fp=fopen("stu.dat","rb"))==NULL)
{
printf("cannot
open
file\n");
}
for(i=0;i<SIZE;i++)
{fread(&stud[i],sizeof(struct
student),1,fp);
printf("\t\t姓名:%s\t\t学号:%d\n",stud[i].name,stud[i].xh);
}
fclose(fp);
return
0;}int
main() {
int
a;
printf("\t\t1:进入
输入数据
\n\t\t2:查询数据\n\t\t3:查询\n");
printf("输入数字:");
scanf("%d",&a);
if(a==1)
srsj();
if(a==2)
cxsj();
if(a==3)
gzcx();
return
0;//缺少返回}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-28
#include
<stdio.h>//标准I/O库
#include
<stdlib.h>//工具函数库
#define
N
8
typedef
struct
list//以SLIST从定义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;//使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)//创建*a的列表
{
SLIST
*h,*p,*q;
int
i;
h=p=(SLIST
*)malloc(sizeof(SLIST));//为*h和*p分配SLIST结构大小的内存空间
for(i=0;
i<N;
i++)//循环体,遍历SLIST结构q,访问其data成员,是p指向q的存储空间
{
q=(SLIST
*)malloc(sizeof(SLIST));
q->data=a[i];
p->next=q;
p=q;
}
p->next=0;//使p的最后一个元素的nex指针指向0(NULL,无效),使之无下一项元素
return
h;//返回SLIST结构*p
}
void
outlist(SLIST
*h)//输出*h的结构成员(列表)
{
SLIST
*p;
p=h->next;
//定义*p,并指向*h
if
(p==NULL)
printf("\nThe
list
is
NULL!\n");//若*p无效,则打印"The
list
is
NULL!"(该列表无效)
else
//否则
{
printf("\nHead");//打印"Head"
do
{
printf("->%c",p->data);
p=p->next;
打印p的每一元素data成员值
}while(p!=NULL);//直到p指针无效
printf("->End\n");//打印"End"
}
}
使用的是C++的“//”注释符
如果无法运行的话,请替换成/*
*/
现在你会填那些空了吧!?!!嘿嘿
第2个回答  2009-06-29
1题目:将一个字符串中的大写字母转换成小写字母。例如:输入aSdFG输出为asdfg。
1. if(*c<='Z'&&*c>='A') : if(*c<='Z'||*c>='A')
*c-='A'-'a'; :*c ='A'-'a'
2.fun= c; return *c;
3.while(*p) : while( *p != '\n')
4.puts(*p); : putc(*p);
2题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)
1.scanf("%d",n); scanf("%d",&n);
2.s+=1%(float)i; s+=1%i;
3.float (*fp)(); float (*fp)(int n);
3.题目:给定程序MODI1.C中函数 fun 的功能是:输入两个双精度数,函数返回它们的平方和的平方根值。例如输入:22.936 和 14.121,输出为:y = 26.934415。
1.double fun (double *a, *b) : double fun (double *a, double *b)
2.c = sqr(a*a + b*b); c = sqrt(a*a + b*b);
3.return *c; return c;
5题目:给定程序MODI1.C中函数 fun 的功能是:根据整型形参 n,计算某一数据项的值。A[1]=1, A[2]=1/(1 + A[1]), A[3]=1/(1 + A[2]), …,A[n]=1/(1 + A[n-1])例如,若 n=10,则应输出:a10=0.617977。
1.float A=1; int i; float A[0]=1; int i;
2.for (i=2; i<n; i++) for (i=1; i<n; i++)
3.A = 1.0\(1+A); A[i] = 1.0\(1+A[i-1]);本回答被提问者和网友采纳
第3个回答  2019-10-28
程序首先从
main那里开始运行。
接着下面那些是定义的变量
你应该知道了吧
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");
}
这个函数是输出链表里面的值
很好理解的
你一句一句的看就知道了
当然如果想过二级
你看不懂程序
你就不要去参加了
觉我所知
二级不会考你写程序
但是会考你读代码哦
很简单的
记住
C语言是从主函数开始的
然后你一句一句的开始往下读就是了
第4个回答  2020-03-11
出错在于else if语句的上面没有if语句;
if(week>=1&&week<=5)

money=20*time;这里就表示这个if语句已经结束了
按照你的题目要求,代码应该修改为(只要加上{}就可以了):
/*
HELLO.C
--
Hello,
world
*/
#include
"stdio.h"
#include
"conio.h"
main()
{
int
week,time,money,suijin;

printf("plese
input
two
number
to
week
and
work
time\n");

scanf("%d%d",&week,&time);

if(week>=1&&week<=5)
{
money=20*time;

suijin=20*time*0.045;

printf("the
money
and
suijin
is
money=%d
suijin=%d",money,
suijin);

}
else
if
(week>=6&&week<=7)
{
money=20*3*time;

suijin=20*3*time*0.045;

printf("the
money
and
suijin
is
money=%d
suijin=%d",money,
suijin);
}

getch();
}
相似回答