错误指示在这一行 int x,y
你把y后面的分号换成英文符号的分号就可以了。因为你程序里误用作中文的分号了。
运行结果是
0x=21x=61y=21y=8
(第一题)#include <stdio.h>void main()
{
int gy(int m, int n)
int x,y,max, min
printf("请输入两个大于0的正整数,以空格或者回车间隔:\n")
scanf("%d%d",&x,&y)
while(x<1 || y<1)
{
printf("输入数据不正确,请重新输入。\n")
printf("请输入两个大于0的正整数,以空格或者回车间隔:\n")
scanf("%d%d",&x,&y)
}
max=gy(x,y)
min=x*y/max
printf("%d与%d的最大公约数是:%d,最小公倍数是:%d\n",x,y,max,min)
}
int gy(int m, int n)
{
int max, t
while(m%n != 0) // while(m%n)
{
t=nn=m%nm=t
}
max=n
return max
}
第二题#include <stdio.h>
#include <math.h>
void main()
{
void root(double a, double b, double c)
double a, b, c
printf("请输入一元二次方程的系数,用空格或者回车间隔:\n")
scanf("%lf%lf%lf",&a,&b,&c)
root(a,b,c)
}
void root(double a, double b, double c)
{
double disc, x1, x2, real , imag
disc = b*b-4*a*c
if(disc>0)
{
x1 = (-b+sqrt(disc))/(2*a)
x2 = (-b-sqrt(disc))/(2*a)
printf("方程有两个实根,分别是:%f 与 %f\n", x1, x2)
}
else if(disc==0)
{
x1 = (-b)/(2*a)
printf("方程有一个实根,它是:%f\n ", x1)
}
else
{
real=(-b)/(2*a)
imag=sqrt(-disc)/(2*a)
printf("方程有两个虚根,分别是:%f+%fi, %f-%fi\n", real,imag,real,imag)
}
}
测试1:请输入一元二次方程的系数,用空格或者回车间隔:1 2 1
方程有一个实根,它是:-1.000000
测试2:请输入一元二次方程的系数,用空格或者回车间隔:1 6 5
方程有两个实根,分别是:-1.000000 与 -5.000000
测试3:请输入一元二次方程的系数,用空格或者回车间隔:1 1 1
方程有两个虚根,分别是:-0.500000+0.866025i, -0.500000-0.866025i
第三题#include <stdio.h>
#include <math.h>
void main()
{
int isprime(int n)
int n
scanf("%d",&n)
while(n<2)
{
printf("Please reinput(n>=2):")
scanf("%d",&n)
}
if(isprime(n))
printf("%d是素数。\n",n)
else
printf("%d不是素数。\n",n)
}
int isprime(int n)
{
int i,k=sqrt(n)
for(i=2i<=ki++)
{
if(n%i==0)
return 0
}
return 1
}
第四题#include <stdio.h>
#include <math.h>
void main()
{
void printA(int a[3][3])
void reverse(int a[3][3])//转置函数的声明
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}
printf("原二维数组:\n")
printA(a)
reverse(a)//函数转置
printf("转置后的数组:\n")
printA(a)
}
void printA(int a[3][3])
{
int i,j
for(i=0i<3i++)
{
for(j=0j<3j++)
{
printf("%6d",a[i][j])
}
printf("\n")
}
}
void reverse(int a[3][3]) //函数转置的定义
{
int i,j,t
for(i=0i<3i++)
{
for(j=0j<ij++)
{
t=a[i][j]
a[i][j]=a[j][i]
a[j][i]=t
}
}
}
第五题#include <stdio.h>
#include <string.h>
void main()
{
char str[30]
void fanxu(char *p)
printf("请输入一个字符串:")
gets(str)
printf("进行反序......\n")
fanxu(str)
printf("反序后的字符串:")
puts(str)
}
void fanxu(char *p)
{
int len=strlen(p)
char *q,c
q=p+len-1//字符串最后一个字符位置
for(p<qp++,q--)
{
c=*p*p=*q*q=c
}
}
第六题#include <stdio.h>
#include <string.h>
void main()
{
char str1[60],str2[30]
void str_copy(char *p, char *q)
printf("请输入第一个字符串:")
gets(str1)
printf("请输入第二个字符串:")
gets(str2)
str_copy(str1, str2)
printf("连接后的字符串:")
puts(str1)
}
void str_copy(char *p, char *q)
{
for(*p!='\0'p++)
for(*q!='\0'p++,q++)
{
*p=*q
}
*p='\0'
}
(0808)#include <stdio.h>
#include <string.h>
void main()
{
char str[80]
void insert(char str[])//插入空格的函数
printf("请输入一个字符串:")
gets(str)
insert(str) //插入空格
puts(str) //输出字符串
}
void insert(char str[])
{
int len, i
len=strlen(str)
for(i=leni>0i--) // 设置空格
{
str[2*i]=str[i]
str[2*i-1]=' '
}
}
(0809)#include <stdio.h>
int letter//字母个数
int digit//数字个数
int space//空格个数
int others//其它字母个数
void main()
{
void count(char str[])//统计个数的函数的声明
char s[81]
printf("请输入一个字符串:")
gets(s)
letter=0digit=0
space=0others=0
count(s)
printf("字符串中共有 %d 个字母,%d 个数字,%d 个空格,%d个其它字母。\n",letter,digit,space,others)
}
void count(char str[]) //统计个数的函数的定义
{
int i
char c
for(i=0str[i]!='\0'i++)
{
c=str[i]
if(c>='a' &&c<='z' || c>='A' &&c<='Z')
{ letter++}
else if(c>='0' &&c<='9')
{ digit++}
else if(c==' ')
{ space++}
else
{ others++}
}
}
(0810)#include <stdio.h>
#include <string.h>
void main()
{
int i
char line[81]
int alphabetic(char c)//判断一个字符是空格还是其它字母
int longest(char str[])//寻找最长单词的起始位置
printf("请输入一行字符串:\n")
gets(line)
printf("最长的字符串是:")
for(i=longest(line)alphabetic(line[i])i++)
{ printf("%c",line[i])}
printf("\n")
}
int alphabetic(char c) //如果为空格返回0,其它字母返回1
{
if(c!=' ')
return 1
else
return 0
}
int longest(char str[])
{
int len=0 // 记录每一个单词的长度
int length=0 // 记录最长单词的长度
int flag=1 // 其值为0时表示当前位置处于字符串中,为1时表示当前位置为空格
int place=0 // 记录最长字符串(单词)的起始位置
int point // 每个字符串的起始位置
for(int i=0i<=strlen(str)i++)
{
if(alphabetic(str[i])) //如果当前位置为非空格
{
if(flag) //如果前一字符为空格
{
point = i // 设置当前单词的起始位置
flag = 0 // flag设为0,表示处于单词中
}
else //如果前一字符为非空格
{ len++} // 单词的长度加1
}
else //当前位置为空格
{
flag = 1 //flag设为1,表示当前位置为空格
if(len >= length) //如果最近单词的长度大于最长长度
{
length = len
place = point //设置最长单词的起始位置
len = 0 //len归0,重新开始计算单词的长度
}
}
}
return place
}
(0811)#include <stdio.h>
#include <string.h>
void main()
{
void inputNum(int a[], int n)
void outputNum(int a[], int n)
void bubble(int a[], int n)
int a[11], n
printf("请输入你要排序的数的个数:")
scanf("%d",&n)
inputNum(a,n)
outputNum(a,n)
bubble(a,n)
printf("从小到大排序为:\n")
outputNum(a,n)
}
void inputNum(int a[], int n)
{
int i
for(i=1i<=ni++)
{
printf("a[%d]=",i)
scanf("%d",&a[i])
}
}
void outputNum(int a[], int n)
{
int i
for(i=1i<=ni++)
{
printf("%6d",a[i])
}
printf("\n")
}
void bubble(int a[], int n)
{
int i,j,t
for(i=1i<=n-1i++)
{
for(j=1j<=n-ij++)
{
if(a[j]>a[j+1])
{ t=a[j]a[j]=a[j+1]a[j+1]=t}
}
}
}
(0813)#include <stdio.h>
void main()
{
double lrd(int, double)
double x
int n
printf("请输入n阶勒让德多项式的阶数:\n")
scanf("%d",&n)
printf("请输入x的值:\n")
scanf("%lf",&x)
printf("参数为%f 的 %d 阶勒让德多项式的值为 %f.\n",x,n,lrd(n,x))
}
double lrd(int n, double x)
{
if(n==0)
return 1
else if(n==1)
return x
else
return ((2*n-1)*x - lrd(n-1,x) -(n-1)*lrd(n-2,x))/n
}
/*
测试1:请输入n阶勒让德多项式的阶数:0请输入x的值:99.99参数为99.990000 的 0 阶勒让德多项式的值为 1.000000.
测试2:请输入n阶勒让德多项式的阶数:1请输入x的值:99.99
参数为99.990000 的 1 阶勒让德多项式的值为 99.990000.
测试3:请输入n阶勒让德多项式的阶数:2
请输入x的值:99.99 参数为99.990000 的 2 阶勒让德多项式的值为 99.490000.
测试4:请输入n阶勒让德多项式的阶数:10
请输入x的值:1.1
参数为1.100000 的 10 阶勒让德多项式的值为 0.888677.
(0817)#include <stdio.h>
void main()
{
int num
void convert(int num)// 转换为字符串的函数的声明
printf("请输入一个整数:\n")
scanf("%d",&num)
printf("转换成字符串:")
if(num<0)
{
putchar('-')
num = -num
}
convert(num)
printf("\n")
}
void convert(int n)
{
int i
if((i = (n/10)) != 0)
{
convert(i)
}
putchar(n%10 + '0')
}
(0818)#include <stdio.h>
int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}
void main()
{
int year,month,day
int days
int count(int year,int month, int day)
int leap(int y)
printf("请输入年份:")
scanf("%d",&year)
while(year<=0)
{
printf("年份不能为负,请重新输入:")
scanf("%d",&year)
}
if(leap(year)) //如果为闰年,2月份的天数为29
{ d[2]=29}
printf("输入月份:")
scanf("%d",&month)
while(month<1 || month>12)
{
printf("月份在1月和12月之间,你的输入有误,请重新输入:")
scanf("%d",&month)
}
printf("输入日数:")
scanf("%d",&day)
while(day<1 || day >d[month])
{
printf("日数应在1和%d之间,请重新输入:",d[month])
scanf("%d",&day)
}
days=count(year,month,day)
printf("%d年%d月%d日是该年的第%d天\n",year,month,day,days)
}
int leap(int y)
{
if(y%4==0 &&y%100!=0 || y%400==0)
return 1
else
return 0
}
int count(int year,int month, int day)
{
int i,days=0
for(i=1i<monthi++)
{ days += d[i]}
days+=day
return days
}
(08050)#include <stdio.h>
#include <string.h>
void main()
{
char str[30]
void fanxu(char str[])
printf("请输入一个字符串:")
gets(str)
printf("进行反序......\n")
fanxu(str)
printf("反序后的字符串:")
puts(str)
}
void fanxu(char str[])
{
int len=strlen(str)
int i,j
char c
i=0j=len-1//i,j分别存储第一个字符和最后一个字符的下标
for(i<ji++,j--)
{
c=str[i]str[i]=str[j]str[j]=c
}
}
(08051)#include <stdio.h>
#include <string.h>
void main()
{
char str[30]
void fanxu(char s[])
printf("请输入一个字符串:")
gets(str)
printf("进行反序......\n")
fanxu(str)
printf("反序后的字符串:")
puts(str)
}
void fanxu(char s[])
{
int len=strlen(s)
int i
char c
for(i=0i<=len/2i++)
{
c=s[i]
s[i]=s[len-i-1]
s[len-i-1]=c
}
}
(08061)#include <stdio.h>
#include <string.h>
void main()
{
char str1[60],str2[30]
void str_copy(char s1[], char s2[])
printf("请输入第一个字符串:")
gets(str1)
printf("请输入第二个字符串:")
gets(str2)
str_copy(str1, str2)
printf("连接后的字符串:")
puts(str1)
}
void str_copy(char s1[], char s2[])
{
int i,j
for(i=0s1[i]i++)// s1[i]!='\0'
for(j=0s1[i]=s2[j]i++,j++)
// (s1[i]=s2[j])!='\0'
}
(08110)#include <stdio.h>
#include <string.h>
void main()
{
void inputNum(char a[], char n)
void outputNum(char a[], char n)
void bubble(char a[], char n)
char a[11], n
printf("请输入你要排序的数的个数:")
scanf("%d",&n)
inputNum(a,n)
outputNum(a,n)
bubble(a,n)
printf("从小到大排序为:\n")
outputNum(a,n)
}
void inputNum(char a[], char n)
{
char i
printf("请连续输入%d个字符:",n)
fflush(stdin)//一般在输入字符或者字符串之前要清空输入缓冲区
for(i=1i<=ni++)
{
scanf("%c",&a[i])
}
}
void outputNum(char a[], char n)
{
char i
for(i=1i<=ni++)
{
printf("%2c",a[i])
}
printf("\n")
}
void bubble(char a[], char n)
{
char i,j,t
for(i=1i<=n-1i++)
{
for(j=1j<=n-ij++)
{
if(a[j]>a[j+1])
{ t=a[j]a[j]=a[j+1]a[j+1]=t}
}
}
}
(08112)#include <iostream.h>
#include <iomanip.h>
void main()
{
void inputNum(int a[], int n)
void outputNum(int a[], int n)
void bubble(int a[], int n)
int a[11], n
cout<<"请输入你要排序的数的个数:"
cin>>n
while(n<1 || n>10)
{
cout<<"请重新输入,(1<=n<=10):"
cin>>n
}
inputNum(a,n)
outputNum(a,n)
bubble(a,n)
cout<<"从小到大排序为:\n"
outputNum(a,n)
}
void inputNum(int a[], int n)
{
int i
for(i=1i<=ni++)
{
cout<<"a["<<i<<"]="
cin>>a[i]
}
}
void outputNum(int a[], int n)
{
int i
for(i=1i<=ni++)
{
cout<<setw(6)<<a[i]
}
cout<<endl
}
void bubble(int a[], int n)
{
int i,j,t
for(i=1i<=n-1i++)
{
for(j=1j<=n-ij++)
{
if(a[j]>a[j+1])
{ t=a[j]a[j]=a[j+1]a[j+1]=t}
}
}
}
(08181)#include <iostream.h>
#include <iomanip.h>
int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}
void main()
{
int year,month,day
int days
int count(int year,int month, int day)
int leap(int y)
cout<<"请输入年份:"
cin>>year
while(year<=0)
{
cout<<"年份不能为负,请重新输入:"
cin>>year
}
if(leap(year)) //如果为闰年,2月份的天数为29
{ d[2]=29}
cout<<"输入月份:"
cin>>month
while(month<1 || month>12)
{
cout<<"月份在1月和12月之间,你的输入有误,请重新输入:"
cin>>month
}
cout<<"输入日数:"
cin>>day
while(day<1 || day >d[month])
{
cout<<"日数应在1和"<<d[month]<<"之间,请重新输入:"<<endl
cin>>day
}
days=count(year,month,day)
cout<<year<<"年"<<month<<"月"<<day<<"日是该年的第"<<days<<"天\n"
}
int leap(int y)
{
if(y%4==0 &&y%100!=0 || y%400==0)
return 1
else
return 0
}
int count(int year,int month, int day)
{
int i,days=0
for(i=1i<monthi++)
{ days += d[i]}
days+=day
return days
}