當前位置:編程學習大全網 - 編程語言 - c語言 編程

c語言 編程

#include <stdio.h>

/*

3、用壹維數組解如下問題:讀取20個在10到100之間的不重復的整數。每讀取壹個值時,如果它與已讀取的值

不重復,就打印該值。用盡可能小的數組解決這個問題。

*/

void noRepeat() {

int a[20];

int i;

int j;

int count = 0;

printf("\n請輸入20個10-100的整數:\n");

for (i=0; i<20; i++) {

scanf("%d",&a[count]);

if (a[count]<10 || a[count]>100) {

printf("輸入錯誤!\n");

i--;

continue;

}

for (j=0; j<count; j++) {

if (a[count] == a[j]) {

break;

}

}

if (j == count) {

printf("[%d]\n",a[count]);

count++;

}

}

}

/*

5、Eratoshenes篩選是壹種尋找素數的方法,該方法表述如下:

1)創建壹個壹維數組,把所有的元素初始化為1(表示真),下標為素數的元素保持1不變,其它下標的元素

最終被置為0

2)從數組下標2出發,每次發現值為1的數組元素時,則看其後的所有元素,把下標是它們倍數的那些元素置

為0。例如,對下標2來說,凡是2的倍數的下標(4,6,8,10,···)都將其元素置為0,對下標3來說,

凡是否的倍數的下標(6,9,12,15,···)將其元素置為0。

當以上過程結束後,仍為1的數組元素的下標就是素數,將這些下標打印輸出即可。編寫程序,

用含有1000個元素的數組確定並打印出1~999之間的所有素數

*/

void Eratoshenes() {

int a[1000];

int i;

int j;

for (i=2; i<1000; i++) {

a[i] = 1;

}

for (i=2; i<1000; i++) {

if (a[i] == 1) {

for (j=2; j*i<1000; j++) {

a[j*i] = 0;

}

}

}

for (i=2; i<1000; i++) {

if (a[i] == 1) {

printf("%d ",i);

}

}

}

/*

7、學生成績統計。某班***6名學生,學習6門功課(數學分析,高等代數,大學物理,計算導論,經濟學,英語),

每門功課有平時,期中和期末三項成績,按平時占20%,期中占30%,期末占50%,求每人每門功課的平時成績和

各個人6門功課的平均成績及總平均成績,最後要求按各人平均成績的高低排序並打印成表格

*/

void func_average(int s[6][6][3], int a[6]){

int i;

int j;

float temp;

for (i=0; i<6; i++) {

temp = 0;

for (j=0; j<6; j++) {

temp += s[i][j][0] * 0.2f + s[i][j][1] * 0.3f + s[i][j][2] * 0.5f;

}

a[i] = (int)(temp / 6);

}

}

void func_score() {

int score[6][6][3] = {

{{10,10,10},{10,10,10},{10,10,10},{10,10,10},{10,10,10},{10,10,10}},

{{20,20,20},{20,20,20},{20,20,20},{20,20,20},{20,20,20},{20,20,20}},

{{30,30,30},{30,30,30},{30,30,30},{30,30,30},{30,30,30},{30,30,30}},

{{40,40,40},{40,40,40},{40,40,40},{40,40,40},{40,40,40},{40,40,40}},

{{50,50,50},{50,50,50},{50,50,50},{50,50,50},{50,50,50},{50,50,50}},

{{60,60,60},{60,60,60},{60,60,60},{60,60,60},{60,60,60},{60,60,60}}

};

char name[6][20] = {"abc","xyz","def","ghi","aaa","bbb"};

int average[6] = {0};

int index[6];

int i;

int j;

int temp;

func_average(score,average);

for (i=0; i<6; i++) {

index[i] = 0;

for (j=0; j<6; j++) {

if (average[index[i]]!=-1 && average[j]>=average[index[i]]) {

index[i] = j;

}

}

average[index[i]] = -1;

}

func_average(score,average);

for (i=0; i<6; i++) {

printf("%4s",name[index[i]]);

for (j=0; j<6; j++) {

temp = (int)(score[index[i]][j][0] * 0.2f +

score[index[i]][j][1] * 0.3f + score[index[i]][j][2] * 0.5f);

printf("%3d",temp);

}

printf("%3d\n",average[index[i]]);

}

}

/*

8、已知壹個有限輸入字符集合?={a,b},寫壹個程序能夠識別集合L={anbn:0≤n≤N}。

說明:該問題實質上是判定輸入字符串是否呈現aa ··· abb ··· b (a,b均為n個) 。

設字符串string有c個字符,則c=2n,且string[1]=··· =string[n]=a, string[n+1]= ···

=string[2n]=b (或進壹步有這樣的關系string[1],string[2]··· ,string[n]={a}, string[n+1],

string[n+2],··· ,string[2n]={b})。

*/

void f(char *str) {

int i = 0;

int j = 0;

char a;

char b;

char *p;

a = str[0];

for (i=0,p=str; *p!=0; p++,i++) {

if (a != *p) {

b = *p;

break;

}

}

for (j=0; *p!=0; p++,j++) {

if (b != *p) {

printf("不屬於集合!\n");

return;

}

}

if (i == j) {

printf("屬於集合!\n");

} else {

printf("不屬於集合!\n");

}

}

void main() {

// Eratoshenes();

// noRepeat();

// func_score();

f("cccdddcc");

}

程序在vc6.0下調試通過.

  • 上一篇:求三集壹體除濕熱泵功能特點?
  • 下一篇:君子有三樂選其中壹樂寫作文
  • copyright 2024編程學習大全網