#include
<stdio.h>
int
main()
{
int
y0,
m0,
d0,
y1,
m1,
d1,
age
while
(
scanf("%d%d%d%d%d%d",
&y0,
&m0,
&d0,
&y1,
&m1,
&d1
)
){
age
=
y1
-
y0
-
1
if
(
m1
>
m0
||
m1
==
m0
&&
d1
>=
d0
)
++age
printf("年龄为:%d周岁!\n",
age)
}
return
0
}
4.
#include
<stdio.h>
#include
<memory.h>
int
main()
{
char
p[500]
int
i,
count
while
(
scanf("%s",
&p)
){
count
=
0
for
(
i
=
0
i
!=
strlen(p)
++i
)
if
(
p[i]
>=
'a'
&&
p[i]
<=
'z'
)
++count
printf("%d\n",
count)
}
return
0
}
2.
#include
<stdio.h>
int
main()
{
int
n
while
(
scanf("%d",
&n)
){
if
(
(
n
&
1
)
==
0
)
printf("%d是偶数!\n",
n)
else
printf("%d,是奇数!\n",
n)
}
return
0
}
第三题(用EFO结束)?EOF吧?EOF已经是文件尾,怎样输出结果?
根据题意,程序分三个主要功能:1、从数组中查找一个整数。2、向数组插入一个整数。3、数组升序排列。
一、其中查找功能,数组无序或升序对应二种写法(直接遍历比较、二分法)。
对于升序数组用二分法查找更快(本案例只有10个数,如数字量大则效果更明显)。
二、数组插入功能,将插入位置及其往后的元素均后移一位(数组大小需多预留1位)。
另外:重复的代码段要写成独立函数,避免代码冗余。
下面是代码(数值我用的随机数填充,你想手动输入自添scanf函数):
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M 10//最大整数个数
void input(int nums[],int len)//输入
void showNum(int nums[],int len)// 打印数组
void px(int nums[],int len)//排序
int checkNum(int nums[],int len,int n)//检查n是否存在于无序数组num,是返回下标,否将n插入数组并返回-1。
int checkNumPX(int nums[],int len,int n)//检查n是否存在于升序数组num,是返回下标,否将n插入对应位置并返回-1。
void move1(int nums[],int len,int inx)//从下标inx开始的元素,全部往后移动1位(inx下标空出来给插入)
int main()
{
int nums[M+1],len=M+1,inx,n//预留一位给插入
srand(time(NULL))
input(nums,len-1)
showNum(nums,len-1)
printf("请输入要查找的数n:"),scanf("%d",&n)
inx=checkNum(nums,len-1,n)
if(inx!=-1) printf("存在!下标是%d\n",inx)
if(inx==-1) printf("不存在!已在数组末尾插入,插入后的数组为:\n"),showNum(nums,len)
printf("\n-----------------------下面是问题2-------------------------------\n")
input(nums,len-1)
px(nums,len)
showNum(nums,len-1)
printf("请输入要查找的数n:"),scanf("%d",&n)
inx=checkNumPX(nums,len-1,n)
if(inx!=-1) printf("存在!下标是%d\n",inx)
if(inx==-1) printf("不存在!已在插入数组对应的位置\n"),showNum(nums,len)
return 0
}
void input(int nums[],int len)
{
int i
for(i=0,printf("生成%d个2位随机整数......\n",len)i<lennums[i]=rand()%90+10,i++)//10~99随机数
}
void showNum(int nums[],int len)
{
int i
for(i=0,printf("当前数组元素为:\n")i<lenprintf("%d ",nums[i]),i++)
printf("\n")
}
void px(int nums[],int len)
{
int i,j
for(i=0,printf("对数组进行升序排序......\n")i<leni++)
for(j=i+1j<lenj++)
if(nums[i]>nums[j]) nums[i]^=nums[j],nums[j]^=nums[i],nums[i]^=nums[j]
}
int checkNum(int nums[],int len,int n)
{
int i
for(i=0,printf("数组中按元素顺序查找%d......\n",n)i<leni++)
if(nums[i]==n) return i
if(i==len) nums[len]=n
return -1
}
int checkNumPX(int nums[],int len,int n)
{
int bInx=0,eInx=len-1,mInx
printf("对升序数组按二分法查找%d......\n",n)
while(eInx-bInx>1)//当序列区间元素大于2个时,取中间值
{
mInx=bInx+(eInx-bInx)/2
if(nums[mInx]==n) return mInx
if(n<nums[mInx]) eInx=mInx//n比中间值小,取前半区间中间继续比较
if(n>nums[mInx]) bInx=mInx//n比中间值大,取后半区间中间继续比较
}
if(nums[eInx]==n) return eInx
if(nums[bInx]==n) return bInx
if(n<nums[bInx]) move1(nums,len+1,bInx),nums[bInx]=n
if(n>nums[bInx] &&n<nums[eInx]) move1(nums,len+1,eInx),nums[eInx]=n
if(n>nums[eInx]) move1(nums,len+1,eInx+1),nums[eInx+1]=n
return -1
}
void move1(int nums[],int len,int inx)
{
int i
for(i=len-1i>inxnums[i]=nums[i-1],i--)
}
1----------------------------#include<stdio.h>
main()
{
void input(int temp[],int t)
void sort(int y[],int s)
int search(int array[],int mtah)
int a[11],n=11,k,wei
printf("input a[10].\n")
input(a,11)
sort(a,11)
printf("input the math.\n")
scanf("%d",&k)
wei=search(a,10,k)
if(wei!=-1) printf("%d zai %d shang.\n",k,wei)
else
{for(k=0k<11k++)
printf("%d ",a[k])}
}
void input(int temp[],int t)/*输入函数*/
{
int i
for(i=0i<t-1i++)
scanf("%d",temp[i])
}
void sort(int y[],int s)/*排序函数*/
{
int temp,i,j
for(i=0i<s-1i++)
for(j=0j<s-1-ij++)
{
if(y[j]<y[j+1])
{temp=a[j]
a[j]=a[j+1]
a[j+1]=temp}
}
}
int search(int array[],int g,int mtah)/*查找函数*/
{
int d=0,i
while(d<g-1)
{
if(array[(d+g)/2]>math) d=(d+g)/2
else g=(d+g)/2
}
if(array[d]!=math) retnue(d)
else
{
for(i=0i<10i++)
if(array[i]<math) break
for(k=10k>=ik--)
array[k]=array[k-1]
array[i]=math
}
}
2--------------------------------------
#include<stio.h>
main()
{
int add(int x,int y)
int sub(int x,int y)
int mul(int x,int y)
int a,b,he,cha,ji
printf("input a b.\n"):
scanf("%d %d",&a,&b)
he=add(a,b)
cha=sub(a,b)
ji=mnl(a,b)
printf("he=%d,cha=%d,ji=%d.\n",he,cha,ji)
}
int add(int x,int y)
{
retnue(x+y)
}
int sub(int x,int y)
{
retnue(x-y)
}
int mul(int x,int y)
{
retnue(x*y)
}
3------------------------------------
#include<stdio.h>
main()
{
float a[10],temp,sum=0,
int i,j,k
printf("input a[10].\n")
for(i=0i<10i++)
scanf("%d",&a[i])
for(i=0i<9i++)
{
k=i
for(j=i+1j<10j++)/*选择排序*/
if(a[j]<a[k]) k=j
temp=a[k]a[k]=a[i]a[i]=temp
}
for(i=1i<9i++)
sum=sum=a[i]
sum=sum/8.0
printf("de fen %.2f.\n",sum)
}
4-----------------------------------------
#include<stdio.h>
struct stu
{
char xh[10]
char name[20]
float yy
float jsj
float sx
float aver
}
main()
{
int i,t,js=0,sum=0
struct sut s[5]
FILE *pf
float temp
if((pf=fopen("cj.dat","w"))==NULL)
{
printf("can't open file.\n")
retnue
}
for(i=0i<5i++)
{
printf("input s[%d].\n",i)
scanf("%s %s %f %f %f",&s[i].xh,&s[i].name,&s[i].yy,&s[i].jsj,&s[i].sx)
fwrite(&s[i],sizeof(struct stu),1,pf)
}
fclose(fp)
for(i=0i<5i++)
a[i].aver=(a[i].yy+a[i].jsj+s[i].sx)/3.0
temp=a[0].aver
for(i=1i<5i++)
{\
printf("%f\n",s[i].aver)
if(s[i].aver>=90) js++
if(temp<s[i].aver) t=i
sum=sum+a[i].aver
}
printf("%s %s %f %f %f %f",a[t].xh,a[t].name,a[t].yy,a[t].jsj,a[t].sx,a[t].aver)
printf("\naveger=%f.\n",sum/5.0)