C语言填空改错编程各一题

更新时间:2023-11-23 08:54:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言填空、改错,编程各一题

━━━━━━━━━━━━━━━━ 六、程序填空 共1题 (共计20分) ━━━━━━━━━━━━━━━━

第1题 (20.0分) 题号:8

/*------------------------------------------------------- 【程序填空】

---------------------------------------------------------

功能:以每行5个数来输出300以内能被7或17整除的偶数,并求出 其和。

-------------------------------------------------------*/

#include <stdio.h> #include <conio.h> main() {

int i,n,sum; sum=0;

/***********SPACE***********/ 【?】;

/***********SPACE***********/ for(i=1; 【?】 ;i++)

/***********SPACE***********/ if(【?】) if(i%2==0) {

sum=sum+i; n++;

printf("m",i);

/***********SPACE***********/ if(【?】)

printf("\\n"); }

printf("\\ntotal=%d",sum); }

答案:

1). n=0

2). i<=300 或 i<300 或 300>=i 或 300>i

3). i%7 == 0 || i == 0 或 !(i%7)||!(i) 或 !(i)||!(i%7) 或 !(i%7&&i)

4). n%5 == 0 或 !(n%5) 或 n/5*5==n

━━━━━━━━━━━━━━━━ 七、程序改错 共1题 (共计30分) ━━━━━━━━━━━━━━━━

第1题 (30.0分) 题号:380

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

功能:删除w所指数组中下标为k的元素中的值。程序中,调用了 getindex、arrout和arrdel三个函数,getindex用以输入

所删元素的下标,函数中对输入的下标进行检查,若越界, 则要求重新输入,直到正确为止。arrout用以输出数组中 的数据,arrdel进行所要求的删除操作。

------------------------------------------------------*/

#include "conio.h" #include "stdio.h" #define NUM 10

/**********FOUND**********/ arrout ( int w, int m ) { int k;

/**********FOUND**********/ for (k = 1; k < m; k++)

/**********FOUND**********/ printf ("%d " w[k]); printf ("\\n"); }

arrdel ( int *w, int n, int k ) { int i;

for ( i = k; i < n-1; i++ ) w[i] = w[i+1];

n--;

return n; }

getindex( int n ) { int i; do

{ printf("\\nEnter the index [ 0<= i< %d ]: ", n ); scanf ("%d",&i ); } while( i < 0 || i > n-1 ); return i; }

main( )

{ int n, d, a[NUM]={21,22,23,24,25,26,27,28,29,30}; n = NUM; clrscr();

printf ("Output primary data :\\n"); arrout ( a, n ); d = getindex( n ); n = arrdel ( a, n, d );

printf ("Output the data after delete :\\n"); arrout( a, n ); }

答案:

1). arrout ( int *w, int m ) 2). for (k = 0; k < m; k++)

3). printf ("%d ", w[k]);

━━━━━━━━━━━━━━━━ 八、程序设计 共1题 (共计30分) ━━━━━━━━━━━━━━━━

第1题 (30.0分) 题号:534

/*------------------------------------------------------- 【程序设计】

---------------------------------------------------------

题目:主函数main()中一维数组ring[9]存放数字1-9。将ring看

成是一个首尾相接的环。将9个数分成3段,第1段为1个2位 数,第2段为1个3位数,第3段为1个4位数,程序计算这3段 数之和。要求从环的第1个数开始,直到第9个数,依上述 规则进行处理。同时在这些和中寻找77的整数倍的数。

例如:

从环的第一个数开始的3段数为12,345,6789,其和为7146; 从环的第二个数开始的3段数为23,456,7891,其和为8370; .....

从环的第九个数开始的3段数为91,234,5678,其和为6003;

编写程序:

1. 编写函数void calculate(int ring[],int st[]),从

数组ring的第1个数开始,将9个数分成3段,第1段为1 个2位数,第2段为1个3位数,第3段为1个4位数,程序 计算所有3段数之和。并将所有3段数之和存入数组st中。

2. 编写函数int check(int st[],int t77[]),在数组st

中寻找77的整数倍的数,存入数组t77中,函数返回其 个数。

---------------------------------------------------------

注意:请勿改动主函数main()中的任何语句。 -------------------------------------------------------*/

#include<stdio.h> #include<stdlib.h> #include<conio.h>

void calculate(int ring[],int st[]){ /**********Program**********/

/********** End **********/ }

int check(int st[],int t77[]){

/**********Program**********/

/********** End **********/ }

int main(){

int ring[9]={1,2,3,4,5,6,7,8,9}; int st[9],t77[9],i,k; FILE *fp;

if((fp=fopen("DATA.TXT","w"))==NULL){ printf("File open error\\n"); exit(0); }

calculate(ring,st); for(i=0;i<9;i++){

printf("%d\\t",st[i]); fprintf(fp,"%d\\t",st[i]); }

printf("\\n"); fprintf(fp,"\\n"); k=check(st,t77); for(i=0;i<k;i++){

printf("%d\\t",t77[i]); fprintf(fp,"%d\\t",t77[i]); }

printf("\\n"); fprintf(fp,"\\n"); fclose(fp); getch(); return 0; }

答案:void calculate(int ring[],int st[]){ int i,j,k,p,subs,sum; for(k=0;k<9;k++){ sum=0;p=k;

for(i=0;i<3;i++){ subs=0;

for(j=0;j<=i+1;j++)

subs=subs*10+ring[p++%9]; sum+=subs; }

st[k]=sum; } }

int check(int st[],int t77[]){ int i,k;

for(i=k=0;i<9;i++) if(st[i]w==0) t77[k++]=st[i]; return k; }

本文来源:https://www.bwwdw.com/article/vgyt.html

Top