要求:
1. 给定两个整形变量的值,将两个值的内容进行交换
ex.不允许创建临时变量,交换两个数的内容(附加题)
#include<stdio.h>
int select(){
int a, b,choice;
printf("输入两个数(例如2 3):");
scanf("%d %d", &a, &b);
Choice:
printf("请选择有无临时变量(虽然结果相同)\n");
printf("1.有\n");
printf("2.无\n");
scanf("%d", &choice);
if (choice == 1 || choice == 2){
switch (choice){
case 1:
{
int temp; //临时变量
temp = a;
a = b;
b = temp;
printf("交换后为%d和%d\n", a, b);
break;
}
case 2:
{
a = a + b; //利用和来交换
b = a - b;
a = a - b;
printf("交换后为%d和%d\n", a, b);
}
}
}
else
{
printf("输入错误,重新选择\n");
goto Choice;
}
}
2. 求10 个整数中最大值。
#include<stdio.h>
int select2(){
int a[10],max;
for (int i = 0; i < 10; i++){
printf("输入第%d个数", i + 1);
scanf("%d",&a[i]);
}
max = a[0];
for (int j = 0; j < 10; j++){
if (a[j]>max){
max = a[j];
}
}
printf("最大的数是:%d\n", max);
}
3. 将三个数按从大到小输出。
#include <stdio.h>
int select3()
{
int a[3],t;
for (int i = 0; i < 3; i++)
{
printf("输入第%d个数:\n", i + 1);
scanf("%d", &a[i]);
}
for (int j = 0; j < 2; j++)
{
for (int i = 0; i < 2 - j; i++)
{
if (a[i] < a[i + 1])
{
t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;
}
}
}
printf("输出%d %d %d\n", a[0], a[1], a[2]);
}
4. 求两个数的最大公约数
#include<stdio.h>
int select4(){
int x, y, temp;
printf("输入两个数:\n");
scanf("%d %d", &x, &y);
if (x < y){
temp = y;
y = x;
x = temp;
}
while (y != 0)
{
temp = x%y;
x = y;
y = temp;
}
printf("为%d\n", x);
}
四个要求分四个函数实现,函数之间可利用多文件进行储存,在主函数之间直接声明即可使用。利用main()函数来完成选择菜单。
EX. main()函数
#include<stdio.h>
#include<stdlib.h>
extern int select();
extern int select2();
extern int select3();
extern int select4();
int main(){
int choice;
printf("1.给定两个整形变量的值,将两个值的内容进行交换。\n");
printf("2.求10 个整数中最大值。\n");
printf("3.将三个数按从大到小输出。\n");
printf("4.求两个数的最大公约数。\n");
printf("输入想要的功能\n");
scanf("%d", &choice);
if (choice > 0 && choice < 5)
{
switch (choice)
{
case 1:{
select();
break;
}
case 2:{
select2();
break;
}
case 3:{
select3();
break;
}
case 4:select4();
}
}
else{
printf("error");
}
system("pause");
}