int alph(char c)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
return(1);
else
return(0); /* find 1 */
}
int longest(char *str) //int longest(char str)
{
int len=0,i,length=0,flag=1,point,place;
for(i=0;i<=strlen(str);i++)
if(alph(str[i]))
if(flag)
{
flag=0;
point=i;
}
else
len++;
else /* Find 2 */
{
flag=1; //flag=0;
if(len>length)
{ length=len;
place=point;
len=0; }
}
return(place);
}
main( )
{
int i;
char line[100];
printf("Enter string\n");
gets(line);
printf("the longest is:");
for(i=longest(line);alph(line[i]);i++)
printf("%c",line[i]);
printf("\n");
}
二、程序填空題
tk22.c是打印出楊輝三角形,在空白處將程序補充完整,運行得出正確結果。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
.
.
.
#define N 11
main( )
{
int I,j,a[N][N];
for (I=1; I<N; I++)
{ a[I][I]=1;
a[I][1]=1; //
}
for (I=3;I<N; I++)
for ( j=2;j<I;j++ )//
a[I][j]=a[I-1][j-1]+a[I-1][j];
for (I=1;I<N;I++)
{ for (j=1;j<=I;j++)
printf("%6d",a[I][j]);
printf("\n");
}
printf("\n");
}
壹、程序改錯題(20分)。
下列程序是建立壹個包含學生有關數據的單向鏈表。但該程序有2個錯誤,錯誤出現在每個註釋行附近,請調試改正。調試改正中,不得改變程序結構,也不得增刪語句。
#define NULL 0
struct stud
{
long num;
char name[10];
float score;
struct stud *next;
};
/* …………… comment …………… */
int n;
struct stud create()
{
struct stud *head,*p1,*p2;
n=0;
p1=p2=(struct stud *)malloc(sizeof(struct stud));
scanf("%ld,%s,%f",&p1->num,p1->name,&p1->score);
/* ……………comment …………… */
head=NULL;
while(p1!=0)
{
n=n+1;
if(n==1) head=p1;
else p2->next=p1;
p1=(struct stud *)malloc(size(struct stud));
scanf("%ld,%s,%f",&p1->num,p1->name,&p1->score);
}
p2->next=NULL;
return(head);
}
二、程序填空題(20分)。
下面的程序是完成從鍵盤上輸入若幹行長度不壹的字符串把其存到壹個文件名為ttt.txt的磁盤文件上去,再從該文件中輸出這些數據到屏幕上, 將其中的小寫字母轉換成大寫字母。然而,該程序是壹個不完整的程序,請在下劃線空白處將其補充完整,以便得到正確答案,但不得增刪原語句。
#include <stdio.h>
main( )
{
int i,flag;
char str[80],c;
FILE *fp;
if((fp=fopen("TTT","w"))==NULL)
{ printf("can't create file\n");
exit(0);
}
for(flat=1;flag;)
{ printf("請輸入字符串\n");
gets(str);
fprintf(fp,"%s",str);
printf("是否繼續輸入?\n");
if((c=getchar()=='N'|| (1) )
flag=0;
getchar();
}
fseek(fp,0,0);
while(fscanf(fp,"%s",str)!=EOF)
{ for(i=0;str[i]!='\0';i++)
if((str[i]>='a'&&(str[i]<='z'))
str[i]=_(2)
printf("%s",str);
}
fclose(fp);
}
試題壹、程序改錯題:
gc56.c程序用於將字符串中的小寫字母轉換為大寫字母,程序中有兩處錯誤,請調試改正
之,但不得增刪語句.
#include<stdio.h>
void main(void)
{
char s[255];
int i;
scanf("%s",s);
for (i=0;s[i];i++)
if(s[i]>='a' && s[i]<='z') //if(s[i]>='b' && s[i]<='z')
s[i] = s[i] -'a' + 'A'; //s[i] = s[i] +'a' + 'A';
printf("%s",s);
}
試題二、程序填空題
tk56.c程序用於計算4×5的整型數組中最大元素所在行和列的位置。下面程序不完整,
請將其補充完整,以便得到正確答案,註意:不得增行和刪行,也不得修改程序的結構。。
#include <stdio.h>
void main(void)
{
int a[4][5]={{4,8,9,10,12},
{2,5,13,17,11},
{81,76,34,57,33},
{1,90,3,78,55}};
int max , max_row , max_col;
int i,j;
max=a[0][0]; //
max_row=0;
max_col=0;
for (i=0;i<4;i++)
for (j=0;j<5;j++)
if(max<a[i][j] )//
{
max=a[i][j] ;
max_row = i ;
max_col = j;
}
printf("%d %d",max_row,max_col);
}
試題壹、程序改錯題:
gc56.c程序用於將字符串中的小寫字母轉換為大寫字母,程序中有兩處錯誤,請調試改正
之,但不得增刪語句.
#include<stdio.h>
void main(void)
{
char s[255];
int i;
scanf("%s",s);
for (i=0;s[i];i++)
if(s[i]>='a' && s[i]<='z') //if(s[i]>='b' && s[i]<='z')
s[i] = s[i] -'a' + 'A'; //s[i] = s[i] +'a' + 'A';
printf("%s",s);
}
試題二、程序填空題
tk56.c程序用於計算4×5的整型數組中最大元素所在行和列的位置。下面程序不完整,
請將其補充完整,以便得到正確答案,註意:不得增行和刪行,也不得修改程序的結構。。
#include <stdio.h>
void main(void)
{
int a[4][5]={{4,8,9,10,12},
{2,5,13,17,11},
{81,76,34,57,33},
{1,90,3,78,55}};
int max , max_row , max_col;
int i,j;
max=a[0][0]; //
max_row=0;
max_col=0;
for (i=0;i<4;i++)
for (j=0;j<5;j++)
if(max<a[i][j] )//
{
max=a[i][j] ;
max_row = i ;
max_col = j;
}
printf("%d %d",max_row,max_col);
}
2.程序改錯題
gc57.c的功能是互換給定數組中的最大數和最小數。如將下面8個數:
5,3,1,4,2,8,9,6
變成:
5,3,9,4,2,8,1,6
程序中,最大數與最小數的互換操作通過函數調用來實現,讓指針max和min分別指向最大數和最小數。程序有二處錯誤,請改正。註意:不得增行和刪行,也不得修改程序的結構。
main()
{
int i;
static int a[8]={5,3,1,4,2,8,9,6};
void jhmaxmin();
printf(" Original array: \n");
for(i=0; i<8; i++)
printf("%5d",a[i]);
printf("\n");
jhmaxmin(a,8);
printf(" Array after swaping max and min: \n");
for(i=0; i<8; i++)
printf("%5d",a[i]);
printf("\n");
}
void jhmaxmin(p,n)
int *p, n; //int p, n;
{
int t, *max, *min, *end, *q;
end=p+n;
max=min=p;
for(q=p+1; q<end; q++)
{ if(*q>*max) max=q;
if(*q<*min) min=q; //if(*q<max) min=q;
}
t=*max; *max=*min; *min=t;
}
1.程序填空題
tk57.c用來輸出兩整數M和N之間的所有素數(質數)。所謂壹個整數n為素數,是指n除了能被1和其本身n除盡
外,不能被2到n-1中的任何整數除盡。如7為素數,而9不是素數。
程序中,外循環變量i用於控制整數選擇範圍,內循環變量j用於判斷某整數i是否為素數,若是,
則輸出該素數,且通過變量s來控制每行輸出5個素數。
#define M 4
#define N 30
main()
{
int i, j, k, s=0;
for(i=M; i<= N ; i++)//
{ for(j=2; j< i ; j++)//
if(i%j== 0 ) break;
if(j>=i)
{ printf("%5d", i);
s=s+1;
if(s%5==0 ) printf("\n");
}
}
printf("\n");
}
程序改錯題:
gc101.c的功能為:輸入8個整數,使用指針以選擇法對其進行排序(從小到大).程序中有三處錯誤代碼,請改正.註意,不得改變程序結構。
#include <stdio.h>
main()
{
int a[8],*p=a;
int i,j;
int tempmin,tempcode;
printf("\n input the numbers:\n");
for (i=0;i<8;i++)
scanf("%d",p+i);
tempmin=*p;
for (i=0;i<7;i++)
{
for (j=i;j<8;j++)
if (j==i||*(p+j)<tempmin)
{ tempmin=*(p+j); //tempmin=*(p+i);
tempcode=j;
};
if (tempcode!=i)
{ *(p+tempcode)=*(p+i);
*(p+i)=tempmin; //*(p+j)=tempcode;
}
}
for (i=0;i<8;i++)
printf("%d, ",*(p+i)); // printf("%d, ",(p+i));
return(1);
}
程序填空題
tk101.c中有整形數組a[ ]。通過調用子程序inv(),對a[ ]數組中的元素,反向交換存儲位置。請在括號[ ]處補充完整程序,並刪除[ ],運行測試,實現上述要求。不得增加行或刪除行,也不得更改程序結構。
void inv(int x[],int n)
{
int temp,i,j,m=[ ];
for(i=0;i<=m;i++)
{j=n-i-1;
temp=x[i];
[ ];
x[j]=[ ];
}
return;
}
main()
{
int a[10]={4,5,6,7,8,9,10,11,12,88};
int i;
printf("The original array:\n");
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
inv(a,10);
printf("The reverse array:\n");
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
}
試題壹、程序改錯題:
gc56.c程序用於將字符串中的小寫字母轉換為大寫字母,程序中有兩處錯誤,請調試改正
之,但不得增刪語句.(20分)
#include<stdio.h>
void main(void)
{
char s[255];
int i;
scanf("%s",s);
for (i=0;s[i];i++)
if(s[i]>='a' && s[i]<='z') //if(s[i]>='b' && s[i]<='z')
s[i] = s[i] -'a' + 'A'; //s[i] = s[i] +'a' + 'A';
printf("%s",s);
}
試題二、程序填空題
tk56.c程序用於計算4×5的整型數組中最大元素所在行和列的位置。下面程序不完整,
請將其補充完整,以便得到正確答案。(20分)
#include <stdio.h>
void main(void)
{
int a[4][5]={{4,8,9,10,12},
{2,5,13,17,11},
{81,76,34,57,33},
{1,90,3,78,55}};
int max , max_row , max_col;
int i,j;
max=a[0][0]; //
max_row=0;
max_col=0;
for (i=0;i<4;i++)
for (j=0;j<5;j++)
if(max <a[i][j])//
{
max=a[i][j] ;
max_row = i ;
max_col = j;
}
printf("%d %d",max_row,max_col);
}
1. 程序填空題
tk57.c用來輸出兩整數M和N之間的所有素數(質數)。所謂壹個整數n為素數,是指n除了能被1和其本身n除盡
外,不能被2到n-1中的任何整數除盡。如7為素數,而9不是素數。
程序中,外循環變量i用於控制整數選擇範圍,內循環變量j用於判斷某整數i是否為素數,若是,
則輸出該素數,且通過變量s來控制每行輸出5個素數。
#define M 4
#define N 30
main()
{
int i, j, k, s=0;
for(i=M; i<=N; i++)//
{ for(j=2; j<i ; j++)//
if(i%j== 0 ) break;
if(j>=i)
{ printf("%5d", i);
s=s+1;
if(s%5 ) printf("\n");
}
}
printf("\n");
}
2. 程序改錯題
gc57.c的功能是互換給定數組中的最大數和最小數。如將下面8個數:
5,3,1,4,2,8,9,6
變成:
5,3,9,4,2,8,1,6
程序中,最大數與最小數的互換操作通過函數調用來實現,讓指針max和min分別指向最大數和最小數。
在**********之間有二處錯誤,請改正。註意:不得增行和刪行,也不得修改程序的結構。
main()
{
int i;
static int a[8]={5,3,1,4,2,8,9,6};
void jhmaxmin();
printf(" Original array: \n");
for(i=0; i<8; i++)
printf("%5d",a[i]);
printf("\n");
jhmaxmin(a,8);
printf(" Array after swaping max and min: \n");
for(i=0; i<8; i++)
printf("%5d",a[i]);
printf("\n");
}
void jhmaxmin(p,n)
int *p, n; //int p, n;
{
int t, *max, *min, *end, *q;
end=p+n;
max=min=p;
for(q=p+1; q<end; q++)
{ if(*q>*max) max=q;
if(*q<*min) min=q; // if(*q<max) min=q;
}
t=*max; *max=*min; *min=t;
}