1.编写函数,求二维数组int a[m][n]每行中最小元素之和(m,n为已定义的int类型常量)
#include <stdio.h>
int getsum(int **a,int m,int n){
int i,j,sum=0;
for(i=0;i<m;i++){
int min=999;
for(j=0;j<n;j++){
if(a[i][j]<min)
min=a[i][j];
}
sum+=min;
printf("min = %d\n",min);
}
return sum;
}
int main(){
int i,j,m=2,n=2;
int **arr=(int **)malloc(m*sizeof(int *));
for(i=0;i<m;i++)
arr[i]=(int *)malloc(n*sizeof(int));
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++)
scanf("%d", &arr[i][j]);
}
int sum = getsum(arr,m,n);
printf("sum = %d",sum);
}
2.编写函数,把字符数组str1中从第m位开始的,长度为n的子串拷贝到另一数组str2中,假定m+n<k,k为str1长度
#include <stdio.h>
void strcpy(char *str1,char *str2,int m,int n){
int i;
for(i=m-1;i<m+n-1;i++)
str2[i-m+1]=str1[i];
}
int main(){
char str1[]="abcdefghijklmn";
char str2[100];
strcpy(str1,str2,3,4);
printf("%s",str2);
}
3.编写递归函数,用辗转相除法求两个数的最大公约数
#include <stdio.h>
int gcd(int x,int y) {
if(y==0)
return x;
return gcd(y,x%y);
}
4.编写程序,在给定的文本形式的整数文件file.txt中查找指定的整数key是否存在,存在则输出“Y”,不存在则输出“N",假定file.txt存放在D盘根目录下
#include <stdio.h>
#include <stdlib.h>
void findkey(int key){
FILE *file;
if((file=fopen("D:\file.txt","r"))==NULL){
printf("open error");
exit(0);
}
int num,flag=0;
while(fscanf(file,"%d",&num)==1)
if(num==key){
flag=1;
break;
}
if(flag==1)
printf("Y");
else
printf("N");
}
5.已知整数链表,要求
设计用于存储结点的数据类型
编函数输出链表中所有素数
#include <stdio.h>
#include <math.h>
typedef struct node {
int key;
struct node *next;
} node;
int isprime(int n) {
if(n<=1)
return 0;
for(int i=2; i<sqrt(n); i++) {
if(n%i==0)
return 0;
}
return 1;
}
void getprime(struct node *head) {
struct node *p=head;
while(p!=NULL) {
if(isprime(p->key))
printf("%d",p->key);
p=p->next;
}
}