求几道简单C语言编程题答案

Python017

求几道简单C语言编程题答案,第1张

1.

#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)