本文目錄一覽:
C語言程序設計方案!!二維數組應用 矩陣算法 求高人
#include
stdio.h
void
input_data(int
*l,int
*r,int
data[100][100])
{
int
i,j,k;
printf(“輸入矩陣行數:”);
scanf(“%d”,l);
printf(“輸入矩陣列數:”);
scanf(“%d”,r);
printf(“按行輸入數據,數據間用空格間隔:\n”);
for(i=0;i*l;i++)
for(j=0;j*r;j++)
scanf(“%d”,data[i][j]);
}
int
add_subtra(int
m1[100][100],int
l1,int
r1,
int
m2[100][100],int
l2,int
r2,char
m,int
rm[100][100])
{
int
i,j;
if(l1!=l2
||
r1!=r2)
{
printf(“矩陣數據錯誤1.\n”);
return;
}
if(m==’+’)
for(i=0;il1;i++)
for(j=0;jr1;j++)
rm[i][j]=m1[i][j]+m2[i][j];
else
for(i=0;il1;i++)
for(j=0;jr1;j++)
rm[i][j]=m1[i][j]-m2[i][j];
}
int
mul(int
m1[100][100],int
l1,int
r1,
int
m2[100][100],int
l2,int
r2,int
m[100][100])
{
int
i,j,k;
if(l1!=r2
)
{
printf(“矩陣數據錯誤2.\n”);
return;
}
for(i=0;il1;i++)
for(j=0;jr2;j++)
{
m[i][j]=0;
for(k=0;kr1;k++)
m[i][j]+=m1[i][k]*m2[k][j];
}
}
int
output(int
m[100][100],int
l,int
r)
{
int
i,j;
for(i=0;il;i++)
{
for(j=0;jr;j++)
printf(“%3d
“,m[i][j]);
printf(“\n”);
}
}
int
main()
{
int
d1[100][100],d2[100][100],d[100][100];
int
l1,r1,l2,r2;
int
i,j,k;
char
mark[2];
printf(“輸入第一個矩陣數據:\n”);
input_data(l1,r1,d1);
printf(“輸入的第一個矩陣:\n”);
output(d1,l1,r1);
printf(“輸入第二個矩陣數據:\n”);
input_data(l2,r2,d2);
printf(“輸入的第二個矩陣:\n”);
output(d2,l2,r2);
printf(“指定運算符(+/-/*):”);
scanf(“%s”,mark);
while(mark[0]!=’+’
mark[0]!=’-‘
mark[0]!=’*’)
{
printf(“符號錯誤請重新輸入(+/-/*):”);
scanf(“%s”,mark);
}
switch(mark[0])
{
case
‘+’:
case
‘-‘:
add_subtra(d1,l1,r1,d2,l2,r2,mark[0],d);
break;
case
‘*’:
mul(d1,l1,r1,d2,l2,r2,d);
break;
}
//output(d1,l1,r1);
//output(d2,l2,r2);
printf(“運算:%c,計算結果為:\n”,mark[0]);
output(d,l1,r2);
system(“pause”);
}
兩個運算矩陣可以是大小不同的,
輸出結果由被乘數矩陣的行和乘數矩陣的列決定,
你要求的輸出格式比較煩,沒時間不夠啦!有時間再玩吧。
C語言編程的一般步驟有哪些?
首先明確要解決的問題;
其次分析問題並選擇想要利用的算法,或者自己想一個的算法;
畫流程圖,明確解決問題過程中的邏輯關係和時序關係;
然後才是上機編寫代碼;
之後是debug調試,基本就可以執行了。
具體就上機編寫代碼來講,首先需要打開C++的開發環境,然後新建一個工程;
然後新建一個文件(如果是VC6.0就可以繼續寫了,如果是VS20**的話就需要在文件菜單中選擇將文件移入工程);
在文件中寫入代碼,然後就可以編譯運行了。
具體代碼的格式來講,首先應該引用頭文件#include”頭文件名(不帶.h)”,然後在所有頭文件引入之後加一行using namespace std;後面可以寫函數了,具體就看你自己的發揮了~
c語言如何編程
C語言編程如何快速實現
在我們初次學習C語言的時候,總想着快速的實現編譯過程。那麼C語言編程究竟是如何實現的呢,當然是要通過自己喜歡的編譯器來編譯完成,那麼今天就為大家介紹C語言編程是如何快速的實現。
1. 首先我們下載一款適合C語言的編譯器,今天為大家講解的C語言編譯器為CodeBlocks,該編譯器沒有太過複雜,很符合初學者,簡單上手快。
2. 首先雙擊打開編譯器,進入登錄選擇界面,我們選擇添加一個新項目。
3. 然後進入選擇界面,優先選擇「Console application」,然後雙擊進入下一個界面。
4. 進入之後便是提示界面,我們選擇「Next」下一步。然後在選擇C++語言,C++語言是C語言的升級版,然後再次點擊「Next」,進入下一步。
5. 選擇創建的名稱,可以創建一個醒目的名稱。然後便是文件放置位置,然後點擊「Next」。
6. 點擊最左側欄「main.cpp」會出現編程書寫界面,然後便可以實現我們的代碼編程。
7. 首先要屬於有關C語言的頭文件#includestdio.h,頭文件是為了下面更好的應用,如果編程的代碼有遇到其他頭文件如數學函數頭文件#includemath.h,以及字符串頭文件#includestring.h。
8. 對於C語言我們首先要學會的便是輸出「Hello world」,那麼今天我們就實現Helloworld的輸出。在主程序優先寫出main函數,然後便是對於我們要用到的內容開始書寫。因為我們只需要輸出簡單的「Helloworld」,所以整條語句便是只有一行printf(“”);輸出的意思,我們只需要將自己想要輸出的填寫在雙引號裏面便可以實現。那麼我們的代碼行便成為了printf(“Hello world”);
9. 下面便是測試我們的代碼是否正確,點擊上方的編譯,如果成功,便可以運行如下,運行框成功出現我們結果,表明編譯成功,便完成了基礎的C語言編譯。
C語言編程
這5道題,我全部在機子上調試通過了。。。all right!。。。你在vc++6上直接去運行,應該是沒有問題的。有些題的解決方案還不算很完美,不過已經完全到達要求。
第一道:
#include “stdio.h”
main()
{ int j,k,a[12],*p;
p=a[0]; //是p=a[0];(或者p=a;)將指針指向數組頭
for(j=0;j12;j++)
scanf(“%d”,p++);
p=a[0]; //輸入之後,再次將指針指向數組頭
for(j=0;j12;j++)
{ printf(“%d”,*p++);
if((j+1)%4 == 0) //是j除以4求余,j從0開始的,不行。所以改成j+1
printf(“\n”);
}
}
第二題:編寫一個函數將給定字符串指定起始位置後的字符串複製到另一個字符串中去,主函數中輸入一個字符串,調用該子函數,複製出另一字符串,後將其輸出。
就是寫個子函數那個:
#include “stdio.h”
#include “string.h”
void main()
{
void copystr(char*,char*,int);
int m;
char str1[20],str2[20];
printf(“input string:”);
gets(str1);
printf(“which character that begin to copy?”);
scanf(“%d”,m);
if(strlen(str1)m)
printf(“input error!”);
else
{
copystr(str1,str2,m);
printf(“result:%s\n”,str2);
}
}
void copystr(char* str1,char* str2,int m)
{
char *p=str1,*q=str2;
for(int i=1;im;i++) //指針移動到目的位置
p++;
while((*q++=*p++)!=’\0′); //開始賦值,直到結尾
}
3. 編寫一個程序,從鍵盤輸入一個1-7之間的數字,輸出其對應星期的英文。對應
順序如下表所示:
1 Monday
2 Tuesday
3 Wednesday
4 Thursday
5 Friday
6 Saturday
7 Sunday
提示:使用字符指針數組。
#include “stdio.h”
void main()
{
int m;
char str1[7][10]={“Monday”,”Tuesday”,”Wednesday”,”Thursday”,”Friday”,”Saturday”,”Sunday”};
printf(“which date that begin to output,please enter 1-7:?”);
scanf(“%d”,m);
if (m0 ||m7)
printf(“please enter right number!\n”);
else
printf(“today is :%s\n”,str1[m-1]);
}
4. 有若干名學生,共修5門功課。他們的學號和成績都存放在二維數組s中,每一
行對應一名學生,且每行的第1列存放學生的學號,現要輸出指定學生的成績。
要求:補充完整search函數。
#include stdio.h
#define MAXN 3
int s[MAXN][6]={{1001,70,80,96,70,90},
{1002,40,80,50,60,80},
{1003,50,70,40,50,75}};
void search(int (*p)[6],int m,int no)
{
int i;
no=no%m; //輸入一個數,超過maxn的數求其餘數,即 讓它在數組範圍內
for(i=0;ino-1;i++)
{
p++; //指針移到選中的一組數據上,以便進行數據輸入
}
printf(“stuNo:\t1\t2\t3\t4\t5\n”);
for(i=0;i6;i++)
printf(“%d\t”,(*p)[i]); //輸出選中數據
printf(“\n”);
}
void main()
{
int num;
printf(“Enter the number of student:\n”);
scanf(“%d”,num);
search(s,MAXN,num);
}
5. 調試下列程序,使之具有如下功能:任意輸入2個數,調用兩個函數分別求:
⑴ 2個數的和,
⑵ 2個數交換值。
要求用函數指針調用這兩個函數,結果在主函數中輸出。
#include stdio.h
void main() //添加返回類型
{ int a,b,c=0; //用『;』
void (*p)(int *a,int *b); //規範書寫其相對應的函數指針
void (*q)(int *a,int *b,int *c);
void sum(int *a,int *b,int *c); //聲明函數,先聲明,後調用,形參用指針類型,才能使a,b互換。
void swap(int*,int *);
printf(“Enter a:”); //分別輸入a。和b
scanf(“%d”,a);
printf(“Enter b:”);
scanf(“%d”,b);
p=swap; //p指向的swap函數地址,所以加一個地址運算符
p(a,b);
printf(“a=%d,b=%d\n”,a,b);
q= sum; //這裡的空格記得去掉哦,因為百度一些特殊規定,這裡的 sum=∑
q(a,b,c);
printf(“sum=%d\n”,c);
}
void sum(int *a,int *b,int *c) //這裡用指針類型的形參才能使主函數的變量產生作用(賦值)
{
*c=*a+*b;
}
void swap(int *a,int *b) //形參中間應該用逗號,不是分號,同時,這裡用指針類型的形參才能使主函數的變量產生作用(賦值)
{ int t;
t=*a;
*a=*b;
*b=t;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/236140.html