1.我们可以用两个整型变量表示分数,其中一个表示分子,另一个表示 分母,例如: m=3, n=5,表示3/5 .编一程序,输入两个变量m (表示分子), n (表示分母), 求其最简分数。例如:输入m=3, n=9,输出1/3
#include <stdio.h>
int gcd(int a,int b) {
if(b==0)
return a;
else
return gcd(b,a%b);
}
int main() {
int up,down;
scanf("%d %d",&up,&down);
printf("%d/%d",up/gcd(up,down),down/gcd(up,down));
}
2.写一个函数,判断给定的整数是否只由1,3, 5, 7, 9组成。
#include <stdio.h>
int judge(char *str) {
int i=0;
while(str[i]!='\0')
if(str[i]=='1'||str[i]=='3'||str[i]=='5'||str[i]=='7'||str[i]=='9')
i++;
else
return 0;
return 1;
}
int main() {
char *str[10];
scanf("%s",&str);
printf("%d",judge(str));
}
3.有100个正整数存放在数组中,试编一函数,要求:
(1)把所有的偶数按从小到大的顺序放在数组的前半部
(2)把所有的奇数按从小到大的顺序放在数组的后半部
#include <stdio.h>
void sort(int *a,int n) {
int temp;
for(int i=0; i<n-1; i++)
for(int j=0; j<n-i-1; j++)
if(a[j]>a[j+1]) {
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
void sort1(int *a,int n) {
int temp;
for(int i=0; i<n-1; i++)
for(int j=0; j<n-i-1; j++)
if(a[j]%2==1) {
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
int change(int *a, int n) {
sort1(a,n);
int i;
for(i=0; i<n; i++)
if(a[i]%2!=0)
break;
sort(a,i);
sort(a+i,10-i);
}
int main() {
int flag=0;
int arr[10]= {1,4,3,2,5,9,7,6,2,8};
change(arr,10);
for(int i=0; i<10; i++)
printf("%d ",arr[i]);
}
4.写一个递归函数,实现对有序整型数组(有100个元素)进行两分法检索。
#include <stdio.h>
int binarySearch(int arr[], int low, int high, int target) {
if (low > high)
return -1;
int mid = (low + high) / 2;
if (arr[mid] == target)
return mid;
else if (arr[mid] > target)
return binarySearch(arr, low, mid - 1, target);
else
return binarySearch(arr, mid + 1, high, target);
}