Seven Day
1、編寫程序,任意輸出10個整數的數列,先將整數按照從小到大的順序進行排序,然後輸入一個整數插入到數列中,使數列保持從大到小的順序
#include<stdio.h>
void mop(int n, int a[]) { //定義mop()函數
int i, j, temp;
for (i = 0; i < n; i++) { //冒泡排序 ,從大到小
for (j = 0; j < n - i; j++) {
if (a[j] < a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (i = 0; i < n + 1; i++) { //遍歷排好序的數組
printf("%d ", a[i]);
}
}
int main(void) {
int a[5], i, num;
printf("請輸入4個整數的數列:");
for (i = 0; i < 4; i++) {
scanf("%d", &a[i]); //輸入4個整數
}
mop(3, a); //調用函數
printf("\n");
printf("請輸入一個將插入數列中的整數:");
scanf("%d", &num); //輸入需插入的整數
printf("\n");
a[4] = num;
mop(4, a); //調用函數
}
輸出結果:
2、輸入一個正整數將其轉化爲二進制並輸出。(使用數組存儲二進制的每一位)
#include<stdio.h>
int main(void) {
int num = 0, i, j, a[100];
printf("請輸入一個整數:");
scanf("%d", &num);
for (i = 0; 1; i++) {
if (num == 1) {
a[i] = 1;
break;
}
a[i] = num % 2;
num /= 2;
}
for (j = i; j > -1; j--) { //倒序輸出a[i]中的元素,得到二進制數
printf("%d", a[j]);
}
}
輸出結果:
3、輸入年月日,判斷這天是該年份的第幾天。
#include<stdio.h>
int main(void) {
int year, month, day, feb = 28, count = 0;
printf("請輸入年:\n");
scanf("%d", &year);
printf("請輸入月:\n");
scanf("%d", &month);
printf("請輸入日:\n");
scanf("%d", &day);
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { //判斷是否爲閏年
feb = 29;
}
switch(month - 1) {
case 12 : count += 31;
case 11 : count += 30;
case 10 : count += 31;
case 9 : count += 30;
case 8 : count += 31;
case 7 : count += 31;
case 6 : count += 30;
case 5 : count += 31;
case 4 : count += 30;
case 3 : count += 31;
case 2 : count += feb;
case 1 : count += 31;
}
count += day; //計算天數
printf("%d", count);
}
#include<stdio.h>
int main(void) {
int year, month, day, i, count = 0, a[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//定義數組
printf("請輸入年:\n");
scanf("%d", &year);
printf("請輸入月:\n");
scanf("%d", &month);
printf("請輸入日:\n");
scanf("%d", &day);
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {// 判斷是否爲閏年
a[1] = 29;
}
for (i = 0; i < month - 1; i++) {
count += a[i];
}
count += day; //計算天數
printf("%d", count);
}
輸出結果:
3、把一個字符串倒序輸出
#include<stdio.h>
#include<string.h>
int main() {
char a[] = "abcdefghrjklmnopqrstuvwxyz"; //定義一個數組,存放字符串
int count = 0;
int i;
for (i = 0; 1; i++) { //計算該數組的字符個數
count++;
if (a[i] == '\0') {
break;
}
}
char b[count]; //聲明數組b[]
for (i = 0; 1; i++) {
if (i == 0) {
b[(count - 1) - i] = '\0';
} else {
b[(count - 1) - i] = a[i - 1]; //將a數組的元素倒序賦值給數組b
}
if (a[i] == '\0') {
break;
}
}
printf("倒序輸出爲:%s\n數組長度爲:%d\n", b, strlen(b));
}
輸出結果:
4、冒泡排序
#include<stdio.h>
int main(void) {
int a[4], i, j, temp;
for (i = 0; i < 4; i++) {
scanf("%d", &a[i]);
}
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
if (a[j] < a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (i = 0; i < 4; i++) {
printf("%d\t", a[i]);
}
}
輸出結果:
5、求水仙花素(兩種方法)
#include<stdio.h>
int main(void) {
int i, a, b, c;
for (i = 100; i < 1000; i++) {
a = i / 100; //百位數
b = i / 10 % 10;//i / 10 - a * 10 //十位數
c = i % 10; //個位數
if (i == a * a * a + b * b * b + c * c * c) { //判斷百位、十位、個位數的3次方的和是否和這個三位數相同
printf("%d\n", i);
}
}
}
#include<stdio.h>
int main(void) {
int i, j, k;
for (i = 1; i < 10; i++) {
for (j = 0; j < 10; j++) {
for (k = 0; k < 10; k++) {
int num = i * 100 + j * 10 + k;
if (num == i * i * i + j * j * j + k * k * k) {
printf("%d\n", num);
}
}
}
}
}
輸出結果: