|
|
|
|
|
بسمه تعالی قابل توجه دانشجویان محترم: زمان امتحان در روز چهارشنبه مورخ 13/10/1385 ساعت 9:00 می باشد. از سوالات زیر در زمان امتحان به قرعه یکی انتخاب شده و برنامه را می نویسید. 1-برنامه ای بنویسید که توابع strcmp و strcat را پیاده سازی کند. توضیح: تابع strcmp به این گونه عمل می کند که با دریافت دو رشته، از کاراکتر اول هر کدام شروع می کند و با هم مقایسه می کند. در صورت رسیدن به اولین اختلاف، تفاوت کاراکتر رشته اول و رشته دوم را بر می گرداند. که اگر صفر باشد یعنی دو رشته با هم مساوی هستند، اگر مثبت باشد رشته اول بزرگتر است در غیر این صورت رشته دوم بزرگتر است. تابع strcat با دریافت دو رشته از ورودی رشته دوم را به انتهای رشته اول می افزاید. ملزومات برنامه: 1- استفاده از توابع و ارسال ارگومانها از طریق ارجاع 2- استفاده از اشاره گر 3- عدم استفاده از توابع موجود در تابع string.h ----------------------------------------------------------------------------------------- 2- برنامه ای بنویسید که توابع strcpy و strchr را پیاده سازی کند. توضیح: تابع strcpy به این گونه عمل می کند که با دریافت دورشته، رشته دوم را در رشته اول کپی می کند. تابع strchr با گرفتن یک رشته و یک کاراکتر، کاراکتر را در رشته جستجو می کند، اگر کاراکتر در رشته باشد آدرس اولین وقوع آن در رشته بر گردانده می شود. ملزومات برنامه: 1- استفاده از توابع و ارسال ارگومانها از طریق ارجاع 2- استفاده از اشاره گر 3- عدم استفاده از توابع موجود در تابع string.h ----------------------------------------------------------------------------------------- 3-برنامه بنویسید که توابع strstr و stelen را پیاده سازی کند. توضیح: تابع strstr با دریافت دو رشته از ورودی مکان رشته دوم را در رشته اول می یابد.(مکان شروع در رشته اول). تابع strlen با دریاقت یک رشته طول آنرا محاسبه می کند. ملزومات برنامه: 1-استفاده از توابع و ارسال ارگومانها از طریق ارجاع 2- استفاده از اشاره گر 3-عدم استفاده از توابع موجود در تابع string.h ----------------------------------------------------------------------------------------- 4-برنامه ای بنویسید که ابتدا تعداد ابعاد و سپس عناصر یک ماتریس حداکثر 15* 15 را دریافت کند ، سپس مد را برای هر ستون و هر سطر پیدا کند. توضیح: منظور از مد عنصری که بیشتری تکرار را داشته باشد. ملزومات برنامه: 1- استفاده ازتوابع ----------------------------------------------------------------------------------------- 5-برنامه ای بنویسید که یک رشته حداکثربه طول 12 راکه شامل ارقام مبنای شانزده یعنی بین 0-9 ، a-f و A-F هستند را دریافت کند مقدار دهدهی آنرا چاپ کند. توضیح: به عنوان مثال با دریافت "a6B" ، مقدار 2619 را برگرداند. ملزومات برنامه: 1- استفاده از توابع و ارسال ارگومانها از طریق ارجاع 2- استفاده از اشاره گرها ----------------------------------------------------------------------------------------- 6-برنامه ای بنویسید که اشاره گری با عناصر تکراری را به دریافت کرده و تعداد عناصر با کمترین و بیشترین مقدار تکرار را چاپ کند. ملزومات برنامه: 2- استفاده از توابع و ارسال ارگومانها از طریق ارجاع 3- استفاده ار اشاره گرها ----------------------------------------------------------------------------------------- 7- برنامه ای بنویسید که با دریافت N از ورودی شکل زیر را چاپ کند. توضیح: N تعداد سطر ها را مشخص می کند. اگر N فرد باشد مثلا 7: * * * * * * * * * * * * * اگر N زوج باشد مثلا 6: * * * * * * * * * * ----------------------------------------------------------------------------------------- 8- برنامه ای بنویسید که ساعت دیجیتال را در وسط صفحه پیاده سازی کند با این شرایط که مقدار N را از دریافت کند، و ثانیه شمار به تعداد N اضافه شود. ملزومات برنامه: 1- تعریف N به عنوان اشاره گر 2- استفاده از توابع ----------------------------------------------------------------------------------------- 9- برنامه ا ی بنویسید که رشته ای را از ورودی خوانده، تمام کاراکترهای تکراری را از رشته حذف کند. توضیح: به عنوان مثال اگر "this is a test" این را دریافت کرد بعد از اجرای برنامه این خروجی را نمایش دهد."this ae" ملزومات برنامه: 1- استفاده ار توابع و ارسال آرگومان از طریق ارجاع 2- استفاده از اشاره گرها ----------------------------------------------------------------------------------------- 10- برنامه ای بنویسید که مقدار N را از ورودی خوانده و تمام اعداد اول قبل از آنرا در یک آرایه ای که به صورت اشاره گر تعریف شده ذخیره کند و درنهایت چاپ کند. توضیح: اعداد اول اعدادی هستند که فقط به خودشان و یک بخش پذیرند. ملزومات برنامه: 1- استفاده از توابع و ارسال آرگومان از طریق ارجاع 2- استفاده از اشاره گرها گردآورنده:مهدی اردیانی |
||
|
+
نوشته شده در پنجشنبه هفتم دی 1385ساعت 11:15 توسط مهدی اردیانی
|
|
||
|
|
|
|
|
بسمه تعالی پاسخ سوالات امتحان میان ترم درس برنامه سازی روز سه شنبه 1-برنامه ای بنویسید که تعدادی نام را از ورودی خوانده انها را درآرایه ای ذخیره کند. و با استفاده از توابع عملیات زیر را انجام دهد. 1-اضافه کردن N نام به آرایه . 2-اضافه کردن یک نام به آخر آرایه. 3-درج کردن یک نام در مکان مشخص. 4- پاک کردن یک نام از لیست. 5- مرتب سازی به روش حبابی. #include<stdio.h> #include<conio.h> #include<string.h> void insert_n_name(); void add_1_name(); void insert(); void void sort(); char string[100][30]; int i=0; void main(){ char ch,str[30]; int n,p,j; clrscr(); while (1){ puts("1.insert n name\n2.add 1 name\n3.insert 1 name in the place\n4.del a name from index\n5.sort\n6.exit "); ch=getche(); switch (ch){ case '1': insert_n_name(); break; case '2': add_1_name(); break; case '3': insert(); break; case '4': break; case '5': sort(); break; case '6':return; } } getch(); } void insert_n_name(){ int n,j; puts("\nenter a number for strat"); scanf("%d",&n); printf("OK for %d times insert strning\n",n); for (i=0;i<n;i++) scanf("%s",string[i]); for(j=0;j<i;j++) printf("%s ",string[j]); puts("\n"); } void add_1_name(){ puts("\nenter a string for add to your list"); scanf("%s",string[i++]); for(int j=0;j<i;j++) printf("%s ",string[j]); puts("\n"); } void insert(){ int p,j; char str[20]; puts("\nwhere do you want to add string"); scanf("%d",&p); if (p>i) puts("insert a value number because in this index weren't string"); else{ puts("plz enter your string"); scanf("%s",str); j=i-1; while (j>=p) { strcpy(string[j+1],string[j]); j--; } strcpy(string[p],str); i++; } for(j=0;j<i;j++) printf("%s ",string[j]); puts("\n"); } void int p,j=0; char str[30]; puts("\nplz enter your name for delete from that index"); scanf("%s",str); for(j=0;j<i;j++) if(strcmp(string[j],str)==0) { p=j; while (p<i) { strcpy(string[p],string[p+1]); p++; } strcpy(string[i],'\0'); i--; } for(j=0;j<i;j++) printf("%s ",string[j]); puts("\n"); } void sort(){ char str[20]; for(int j=i-1;j>0;j--) for(int k=0;k<j;k++) if ((strcmp(string[k],string[k+1]))<0){ strcpy(str,string[k]); strcpy(string[k],string[k+1]); strcpy(string[k+1],str); } for(j=0;j<i;j++) printf("%s ",string[j]); puts("\n"); } 2-ساخت یک ساعت دیجیتال بدون استفاده از دستورات واقع در time.h . #include<stdio.h> void main(){ int h=0,m=0,s=0; long int i; while(1){ for(i=0;i<2000000;i++); s++; if(s==60){ s=0; m++; } if(m==60){ m=0; h++; } if(h==24) h=0; printf("\r"); if(h<10) printf("0%d:",h); else printf("%d:",h); if(m<10) printf("0%d:",m); else printf("%d:",m); if(s<10) printf("0%d",s); else printf("%d",s); } } 3-برنامه بنویسید که در دو آرایه 20 تایی که از کاراکتر اعداد پر شده است را با هم جمع کند و نتیجه را نمایش دهد. #include<stdio.h> #include<conio.h> void main(){ clrscr(); char str1[21]="",str2[21],str3[22]={0}; int a,b,c; scanf("%s",str1); scanf("%s",str2); for(int i=20;i>0;i--){ a=((int)str1[i-1])-48; b=((int)str2[i-1])-48; c=a+b; if(c<10) str3[i]=(char)(c+48); else{ str3[i]=(char)(c-10+48); str3[i-1]+=(char)1; } } for(i=0;i<21;i++) printf("%c",str3[i]); getch(); } |
||
|
+
نوشته شده در پنجشنبه هفتم دی 1385ساعت 11:14 توسط مهدی اردیانی
|
|
||
|
|
|
|
|
پاسخ سوالات امتحان میان ترم درس برنامه سازی روز سه شنبه 1- برنامه بنویسید که دو آرایه مرتب از اعداد را گرفته و با هم ادغام کند . در یک ارایه دو مقدار مساوی وجود ندارد. در آرایه جواب هم دو مقدار مساوی وجود ندارد. #include<stdio.h> #include<conio.h> #include<string.h> void main(){ clrscr(); int aray1[10]={0,1,2,3,4,5,6,7,8,9}; int aray2[14]={-5,-2,0,1,3,5,7,9,11,12,13,14,15,16}; int aray3[30],k=0,i=0,j=0; for (k=0;i<10&&j<14;k++) { if (aray1[i]==aray2[j]) { aray3[k]=aray1[i]; i++; j++; } else if (aray1[i]<aray2[j]) aray3[k]=aray1[i++]; else if (aray1[i]>aray2[j]) aray3[k]=aray2[j++]; } if (i==10) while (j<14) aray3[k++]=aray2[j++]; else if (j==14) while (i<10) aray3[k++]=aray1[i++]; for (i=0;i<k;i++) printf("%d",aray3[i]); getch(); } 2- برنامه بنویسید که با دریافت ضرایب یک معادله با درجه N تمام ضرایب آنرا ،در بازه 1000 تا -1000 با تقریب 0.1 به دست آورد. #include<stdio.h> #include<conio.h> #include<math.h> void main(){ clrscr(); int aray[20],n,tavan; float sum=0; scanf("%d",&n); for (int i=0;i<=n;i++) scanf("%d",&aray[i]); for (float j=-1;j<1000;j+=0.1) { for (i=0;i<n;i++){ tavan=pow(j,n-i); sum+=(aray[i]*tavan); } sum+=aray[i]; if (sum==0) printf("\n%f",j); sum=0; } getch(); } 3-برنامه ای بنویسید که با دریافت یک رشته که به نقطه ختم می شود مجموع کد های اسکی تمام کاراکتر های آنرا به دست آورد نتیجه را بر 64 تقسیم کند و کاراکتر معادل آنرا به انتهای رشته اضافه کند . برنامه تا زمانی که کاربر فقط یک نقطه وارد کرده باشد ادامه پیدا کند. #include<stdio.h> #include<conio.h> #include<string.h> void main(){ clrscr(); char str[20],ch; int i=0,sum=0; while(1){ ch=getche(); if (ch=='.') return; else while(ch!='.') { str[i++]=ch; ch=getche(); } str[i]='.'; str[++i]='\0'; i=0; while(str[i]) sum+=(int)str[i++]; sum/=64; str[i++]=(char)sum; str[i]='\0'; puts(str); i=0; } } 3- برنامه بنویسید که فرمول زیر را محاسبه کند. 1 + 1/2! + 1/3! + … + 1/n! #include<stdio.h> #include<conio.h> int fact(int); void main(){ clrscr(); int n,res; float sum=0; scanf("%d",&n); for(int i=1;i<=n;i++) { res=fact(i); sum+=(1/float(res)); } printf("%f",sum); getch(); } int fact(int k){ int nfc=1; for(int i=1;i<=k;i++) nfc*=i; return nfc; } |
||
|
+
نوشته شده در پنجشنبه هفتم دی 1385ساعت 11:13 توسط مهدی اردیانی
|
|
||